R - write.table覆盖文件

时间:2016-06-01 11:26:37

标签: r file write.table

我的脚本从文件夹中读取文本文件列表。计算每个文本文件中几列中的所有值。 最后,我想将结果data.frame写入不同位置的新文本文件中。 问题是,脚本会覆盖之前创建的文件。所以我最终只得到一个文件(最后一个被读入的文件)。 但我不知道我在这里做错了什么。输出文件名每次都不同,所以在我看来它应该产生单独的文件。

该脚本如下所示:

 RAW <- "C:/path/tofiles"
 files <- list.files(RAW, full.names = TRUE)
 for(j in length(files)) {
   if(file.exists(files[[j]])){
     data <- read.csv(files[[j]], skip = 0, header=FALSE)
     data[9] <- do.call(cbind,lapply(data[9], function(x){(data[9]*0.01701)/0.00848}))
     data[11] <- do.call(cbind,lapply(data[11], function(x){(data[11]*0.01834)/0.00848}))
     data[13] <- do.call(cbind,lapply(data[13], function(x){(data[13]*0.00982)/0.00848}))
     data[15] <- do.call(cbind,lapply(data[15], function(x){(data[15]*0.01011)/0.00848}))
     OUT <- paste("C:/path/to/destination_folder",basename(files[[j]]),sep="")
     write.table(data, OUT, sep=",", row.names = FALSE, col.names = FALSE, append = FALSE)
   }
 }

1 个答案:

答案 0 :(得分:1)

The problem is in your for loop. length(files) just provides 1 value, namely the length of your files-vector, while I think you want to have a sequence with that length.
Try seq_along or just for(j in files).