从多个文件夹中读取多个文本文件

时间:2015-03-18 12:57:34

标签: r file text-mining

我正在尝试读取子文件夹中的所有'* .txt'文件,但似乎循环中存在问题。基本上,文件夹的结构如下:

branch1    branch 2     txt.file    result I want
1 -------- 2002----------a---------------a
  ---------2003----------b---------------b+c
               ----------c
2 ---------2004----------d---------------d
  ---------2005----------e---------------e+f
               ----------f

所以,我一直在列表中列出目录,如下所示:

setwd("C:/Users/J/Desktop/research/DATA/test")
parent.folder<-"C:/Users/J/Desktop/research/DATA/test"
sub.folders1 <- list.dirs(parent.folder, recursive=TRUE)[-1]
sub.folders2 <- list.dirs(sub.folders1, recursive=FALSE)
r.scripts <- file.path(sub.folders2)

然后我尝试在每个文件夹中找到.txt个文件,然后全部读取它们,以便单个文件夹可以包含单个文本文件。就像我上面描绘的“我想要的结果”一样。 (我不想将多个文件读入单个数据框!)

所以从这里我尝试使用for循环读取同一文件夹中的.txt文件,但似乎我编写的代码中存在问题。

for (k in 1:length(r.scripts)){
  file.name.v <- list.files(r.scripts[k], pattern="*.txt")
    for (f in 1:length(file.name.v)){
      file.read.v <- scan(paste(r.scripts,file.name.v[f], sep="/"),
                          what ="character",sep="\n")
     }
   }

1 个答案:

答案 0 :(得分:1)

您忘记提供问题说明,但这是可行的:

parent.folder<-"C:/Users/J/Desktop/research/DATA/test"
setwd(parent.folder)

sub.folders1 <- list.dirs(parent.folder, recursive=TRUE)[-1]
sub.folders2 <- list.dirs(sub.folders1, recursive=FALSE)
r.scripts <- file.path(sub.folders2)

for (k in r.scripts){
  file.name.v <- list.files(k, pattern="*.txt")
  for (f in file.name.v){
    file.read.v <- scan(paste(k, f, sep="/"),
                        what ="character",sep="\n")
  }
}

修改

# create list
l <- list()
for (k in r.scripts){
  file.name.v <- list.files(k, pattern="*.txt")
  for (f in file.name.v){
    l[[k]] <- c(l[[k]], scan(paste(k, f, sep="/"),
                             what ="character",sep="\n"))
  }
}