R - write.table 覆盖文件
R - write.table overwrites file
我的脚本从文件夹中读取文本文件列表。对每个文本文件中几列中的所有值进行计算。
最后,我想将结果 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)
}
}
问题出在您的 for
循环中。 length(files)
只提供 1 个值,即你的 files
-向量的长度,而我认为你想要一个具有该长度的序列。
尝试 seq_along
或只是 for(j in files)
.
我的脚本从文件夹中读取文本文件列表。对每个文本文件中几列中的所有值进行计算。 最后,我想将结果 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)
}
}
问题出在您的 for
循环中。 length(files)
只提供 1 个值,即你的 files
-向量的长度,而我认为你想要一个具有该长度的序列。
尝试 seq_along
或只是 for(j in files)
.