首页 文章

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

提问于
浏览
1

我正在尝试读取子文件夹中的所有'* .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 文件,然后全部读取它们,以便单个文件夹可以包含单个文本文件 . 就像我在"results I want"上面描绘的那样 . (我不想将多个文件读入单个数据框!)

所以从这里我尝试使用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 回答

  • 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")
      }
    }
    

    Edit

    # 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"))
      }
    }
    

相关问题