我正在尝试从文件夹中读取文件,计算它们然后使用for循环来查看每个文件,使用cat
函数和第一个文件,将输出放在 output.txt < / strong>就像:
我的代码如下:
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看起来像:
总结:
我正在尝试加载我的test_folder,计算文件数量(在我的情况下为2),遍历for循环中的每个文件和cat
它们以便我可以看到里面的内容然后在list.txt中打印值(输出)格式如:
我的错误在哪里以及如何输出/更改代码才能使其正常工作?
答案 0 :(得分:1)
好的,如果我理解正确,你想从一个目录中打开几个.txt文件,然后连接它们的内容。我建议您使用list.files
(就像您现在一样),然后使用lapply
和readLines
来打开这些文件。
获取.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
对不起,如果我遗漏了什么或被误解了。请评论,我会相应调整。