[英]Merge multiple .txt files from multiple directories in R
合并来自不同子目录的 .txt 文件
我有一个文件夹,里面装满了过去日期的子文件夹(例如 01_14),每个日期文件夹内有 11 个名为 01.txt、02.txt 的文件...如何将所有 .txt 文件合并为一个数据框架,一列是它来自的文件夹的名称,一列是它来自的文件名?
我的层次结构看起来像这样:
\Data
\01_14
01.txt
02.txt
...
11.txt
\02_14
01.txt
02.txt
...
11.txt
\03_14
01.txt
02.txt
...
11.txt
当我需要读取多个文件时,我使用read.stack辅助函数,它基本上是 read.table 的包装器,但它还允许您在每个文件的基础上添加额外的列。 这是我如何在您的场景中使用它的方法。
dir<-"Data"
subdir<-list.dirs(dir, recursive=F)
#get dir/file names
ff<-do.call(rbind, lapply(subdir, function(x) {
ff<-list.files(x, "\\.txt$", include.dirs = FALSE, full.names = TRUE)
data.frame(dir=basename(x), file=basename(ff),
fullpath=ff, stringsAsFactors=F)
}))
#read into data.frame
read.stack(ff$fullpath, extra=list(file=ff$file, dir=ff$dir))
尝试这个:
fileNames <- list.files("Data", recursive = TRUE, full.names = TRUE)
fileContents <- lapply(fileNames, function(fileName)
paste(readLines(fileName, warn = FALSE), collapse = "\n"))
meta <- regmatches(fileNames, regexec(".*Data/(.*)/(.*)$", fileNames))
merged <- mapply(c, fileContents, lapply(meta, "[", -1), SIMPLIFY = FALSE)
as.data.frame(t(do.call(cbind, merged)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.