我有一组包含重复条目的 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
当您想要函数的返回值时。 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/