我在不同的目录中有相同格式的许多数据,而且我还有一个处理这些数据的功能。
我想加载我的所有数据,然后使用我的函数处理这些数据,然后将这些数据存储在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
添加参数时我错了。
我会等你的光。
谢谢
答案 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)
}