在R循环中以CSV格式存储文件

时间:2014-12-04 03:46:59

标签: r

我在不同的目录中有相同格式的许多数据,而且我还有一个处理这些数据的功能。

我想加载我的所有数据,然后使用我的函数处理这些数据,然后将这些数据存储在CSV文件中。

当我使用我的一个数据时,代码看起来像

ENFP_0719 <- f_preprocessing2("D:/DATA/output/ENFP_0719")
write.csv(ENFP_0719, "D:/DATA/output2/ENFP_0719.csv")

一切正常,文件ENFP_0719.csv已正确创建。 但是当我尝试使用循环时,代码看起来像

setwd("D:/DATA/output")
file_list <- list.files()
for (file in file_list){
  file <- f_preprocessing2(print(eval(sprintf("D:/DATA/output/%s",file))))
  print("Storing data to csv....")
  setwd("D:/DATA/output2")
  write.csv(file, sprintf("%s.csv",file))
}

我得到了这样的错误

[1] "D:/DATA/output/ENFP_0719"
[1] "Storing data to csv...."
Error in file(file, ifelse(append, "a", "w")) : 
  invalid 'description' argument

我还尝试过使用粘贴paste('data', file, 'csv', sep = '.') 但我得到了同样的错误。我对这个错误很困惑,因为我的功能没有任何问题,当我尝试使用一个数据时,我已经向你展示一切正常。

所以,我的代码有什么问题,我的循环代码是错误的还是在为write.csv添加参数时我错了。

我会等你的光。

谢谢

1 个答案:

答案 0 :(得分:1)

我认为你可以通过使用list.files的full.names参数并进行一些其他更改来简化它:

path = 'data/output'
file_list <- list.files('data/output', full.names=TRUE)
for (file in file_list) {
  file_proc <- f_preprocessing2(file)
  new_path <- gsub('output', 'output2', file)
  write.csv(file_proc, new_path)
}