如何在R中逐个加载txt文件而不是一次读取所有文件并组合成单个矩阵

时间:2016-04-23 06:01:26

标签: r

我在一个文件夹中有100个文本文件。我可以使用下面的这个函数来读取所有文件并将其存储到myfile中。

file_list <- list.files("C:/Users/User/Desktop/code/Test/", full=T)
file_con <- lapply(file_list, function(x){
return(read.table(x, head=F, quote = "\"", skip = 6, sep = ","))
})
myfile <- do.call(rbind, file_con)

我的问题是如何在读取第二个文件之前读取Test文件夹中的第一个文件。所有的文本文件名也不同,我不能将其更改为例如1到100之间的数字。我想也许可以在我的所有文本文件的前面添加一个整数,然后使用for循环来匹配文件和调用但这可能吗?

我需要读取第一个文件,然后进行一些计算,然后在读取第二个文件之前将结果导出到result.txt中。但是现在我手动完成并且我有近800个文件,所以它会很大让我坐下来等待计算的麻烦。下面的代码是我目前使用的代码。

myfile = read.table("C:/Users/User/Desktop/code/Test/20081209014205.txt", header = FALSE, quote = "\"", skip = 0, sep = ",")

2 个答案:

答案 0 :(得分:0)

现在我可以读取文件并使用

进行计算
for(e in 1:100){ 
myfile = read.table(file_list[e], header = FALSE, quote = "\"", skip = 0, sep = ",");
while(condition){
 Calculation
}
myresult <- file.path("C:/Users/User/Desktop/code/Result/", paste0("-",e, ".txt"));
write.table(x, file = myresult, row.names=FALSE, col.names=FALSE ,sep = ",");

现在我的问题是如何让我的输出文件与原始文件的名称相同但在后面添加-e值?

答案 1 :(得分:0)

以下设置将同时读取一个文件,执行分析, 并使用略微修改的名称将其保存回来。

save_file_list <- structure(
    .Data = gsub(
        pattern = "\\.txt$",
        replacement = "-e.txt",
        x = file_list),
    .Names = file_list)


your_function <- function(.file_content) {
    ##  The analysis you want to do on the content of each file.
}

for (.file in file_list) {
    .file_content <- read.table(
        file = .file,
        head = FALSE,
        quote = "\"",
        skip = 6,
        sep = ",")
    .result <- your_function(.file_content)
    write.table(
        x = .result,
        file = save_file_list[.file])
}