读取文件列表,应用函数并用同名重写

标签 r csv

我有一组包含重复条目的 csv 文件,我需要删除并重写具有相同名称和格式的文件。

这是我到目前为止所做的,

filenames<-list.files(pattern =".csv") 
datalist <-lapply(filenames, function(x){read.csv(file=x,header=F)})
unique.list <- lapply(datalist,unique)

而且我坚持分离列表中的数据框并用相同的名称重写。还有一个类似的问题,我尝试了几个小时但无法理解程序。

最佳答案

我肯定会使用 for环形。嘘,别告诉任何人我说过。为什么?三个原因...

  • 您想调用write.csv因为它是副作用,而不是返回值,即您希望将文件写入磁盘。使用*apply当您想要函数的返回值时。
  • 主要瓶颈将是磁盘 I/O,因此我预计使用 for 不会产生性能开销循环与使用 *apply 相比环形。
  • *apply函数将在循环的每次迭代中吞噬内存,并且不能保证在所有迭代完成之前释放它。在 for如果您要覆盖循环内的对象,则循环内存将在下一次迭代开始时释放。如果您正在使用大型 csv文件,这可能是一个优势。我会尝试找到答案的链接 for解决了 lapply 的问题由于内存问题无法。

  • 因此,鉴于您的重复数据列表是...
    for( i in 1:length( filenames ) ){
      write.csv( unique.list[[i]] , filenames[[i]] )
    }
    

    Here is an answer在哪里 for循环是必需的,因为 lapply等效遇到内存分配错误。

    关于读取文件列表,应用函数并用同名重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314215/

    相关文章:

    按行名删除一堆行 - 如何在 R 中初始化空字符串?

    r - 在更改信息时查找唯一用户

    mysql - Prestashop 导出从 1.5 到 1.7

    mysql - 当我上传的文件以分号分隔时,如何处理单元格中的分号?

    c++ - OpenMP 在 Rcpp 代码中为 SEIR 模型生成段错误

    R - 连接整数数组

    R:自动扩展VIM::aggr图中的边距

    Haskell 计算满足查询的列表的元素

    python - 保留 x 行并从 csv 文件中删除所有行

    excel - 从多个 CSV 文件构建 Excel 电子表格