我正在尝试读取子文件夹中的所有'* .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")
}
}
答案 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"))
}
}