我的目标是将一组代码应用于文件夹(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;?
谢谢!
答案 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)