我有一个包含许多.csv的文件夹(例如File1.csv,File2.csv等)。我使用下面的代码加载.csv文件并进行一些转换。
path <- "~/files/"
files <- list.files(path=path, pattern="*.csv$")
library("robustX", lib.loc="/Library/Frameworks/R.framework/Versions/3.2/Resources/library")
for(file in files)
{
perpos <- which(strsplit(file, "")[[1]]==".")
assign(
gsub(" ","",substr(file, 1, perpos-1)),
data <-read.csv(paste(path,file,sep=""), sep=";"))
Cb1 <- mvBACON(data[2:7],collect = 4, alpha=0.85, init.sel = c("Mahalanobis"))
data$distance<-Cb1$dis
data<-data[-c(13:31)]
write.csv(data, "~/files/output/FILENAME.csv")
}
我的问题是:
答案 0 :(得分:3)
对于您的第一个问题:在循环结束时删除每个数据框,您可以在结束rm(data)
之前添加}
。它将从全局环境中删除data
。
对于您的第二个问题,请使用paste0()
(即paste
与sep=''
):write.csv(data, paste0("~/files/output/",file))
代码的最后几行应该是:
for (file in files){
# ...
data<-data[-c(13:31)]
write.csv(data, paste0("~/files/output/",file))
rm(Cb1)
rm(data)
}