保存R for循环结果在不同的文件夹中

时间:2014-09-09 15:03:37

标签: r loops for-loop lapply

我的目标是将一组代码应用于文件夹(C:\ sample)中的每个文件,然后将处理后的数据保存到另一个文件夹(C:\ cleaning)。我在这里从其他帖子中学到了(非常感谢!)并为我的案例写了一段代码:

files <- list.files(path="C:\\sample", pattern="*.CSV", full.names=T, recursive=FALSE)
datalist <- lapply(files, function(x) {
t <- read.csv(x, header=T, na.string=c("", "null","NaN"),stringsAsFactors=FALSE) # load file
t[ , c(4:10)]<- sapply(t[ , c(4:10)], as.numeric)
t <- t[!is.na(t$Node.1),]
})

for( i in 1:length(files)){
write.csv(datalist[[i]] , files[[i]] ,row.names=F )
}

通过运行我当前的代码,结果将替换文件夹中的原始文件&#34; C:\ sample&#34;。如何稍微修改代码,以便每个处理过的文件都保存在另一个文件夹中&#34; C:\ cleaning&#34;?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用full.names=T会添加文件名的路径,这对您正在做的事情不方便。

解决问题的最佳方法是设置工作目录

setwd("C:\\sample")

然后列出你的文件

files <- list.files("C:\\sample", pattern="*.CSV")

然后,您可以附加所需的路径

write.csv(datalist[[i]] , paste0("C:\\cleaned\", files[[i]]), 
          row.names=F)

或更改工作目录并直接使用文件名

setwd("C:\\cleaned")
write.csv(datalist[[i]] , files[[i]], row.names=F)