从.txt文件中读取值并将其写入输出文件

时间:2016-08-28 19:02:36

标签: r file-io

我正在尝试从文件夹中读取文件,计算它们然后使用for循环来查看每个文件,使用cat函数和第一个文件,将输出放在 output.txt < / strong>就像:

  • file1:cat output
  • file2:cat output

我的代码如下:

entry = list.files(path = "//Users//michael/Desktop//test_folder", full.names = TRUE, recursive = TRUE)
output = list.files(path = "//Users//michael/Desktop//list.txt", full.names = TRUE, recursive = TRUE)
len = length(entry)
for(i in 1){
cat(entry,file="//Users//michael/Desktop//list.txt", sep="\t", append=TRUE)
cat("\n",file="//Users//michael/Desktop//list.txt", append=TRUE)
}

我也试过for(i in 1:len),但这只会使x3更长,因为它会为'i'的每次迭代都做到。

我的test_folder看起来像:

  • 文件1.txt,其中包含值(John,Michael,Fabian)的新行(\ n)
  • file 2.txt具有类似的值

总结:
我正在尝试加载我的test_folder,计算文件数量(在我的情况下为2),遍历for循环中的每个文件和cat它们以便我可以看到里面的内容然后在list.txt中打印值(输出)格式如:

  • file1:cat output
  • file2:cat output

我的错误在哪里以及如何输出/更改代码才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

好的,如果我理解正确,你想从一个目录中打开几个.txt文件,然后连接它们的内容。我建议您使用list.files(就像您现在一样),然后使用lapplyreadLines来打开这些文件。

获取.txt文件的位置。这将生成一个列表,列表中的每个元素都是一个目录(文件位置):

dirs <- list.file(path="path/to/input/directory", full.path=TRUE)

使用lapply迭代列表中的元素(如for循环)并使用函数readLines打开它们。这会生成一个与dirs具有相同元素数的列表,但这次它包含文本文件的内容:

myfiles <- lapply(dirs, readLines)

最后,将列表中的这些元素(每个元素包含一个文本文件的内容)组合到一个对象中,您可以将其保存为单个文本文件。

dat <- do.call("rbind", myfiles) # note rbind might need to be replaced with "c" depending on the contents of the .txt files

对不起,如果我遗漏了什么或被误解了。请评论,我会相应调整。