2014-12-04 29 views
0

我在不同的目录中有许多相同格式的数据,而且我还有一个处理这些数据的函数。在R循环中以CSV格式存储文件

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

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

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

而且一切都OK,文件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

我想你可以把大量的使用full.names参数list.files和做一些其他的变化这样简单:

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) 
}