我需要从一个文件夹中将许多.txt
个文件读入数据框。 .txt
文件名的格式为angles_*_dat.result
(例如angles_1_dat.result
,angles_2_dat.result
)。
我正在使用这个,但这个外观"新手" :
data1 <- read.table("~/data/angles_medias_1.dat.results.dat.", quote="\"", comment.char="")
data2 <- read.table("~/data/angles_medias_2.dat.results.dat.", quote="\"", comment.char="")
data3 <- read.table("~/data/angles_medias_3.dat.results.dat.", quote="\"", comment.char="")
data4 <- read.table("~/data/angles_medias_4.dat.results.dat.", quote="\"", comment.char="")
data5 <- read.table("~/data/angles_medias_5.dat.results.dat.", quote="\"", comment.char="")
data6 <- read.table("~/data/angles_medias_6.dat.results.dat", quote="\"", comment.char="")
data7 <- read.table("~/data/angles_medias_7.dat.results.dat", quote="\"", comment.char="")
data8 <- read.table("~/data/angles_medias_8.dat.results.dat", quote="\"", comment.char="")
data9 <- read.table("~/data/angles_medias_9.dat.results.dat", quote="\"", comment.char="")
data10 <- read.table("~/data/angles_medias_10.dat.results.dat", quote="\"", comment.char="")
还有其他方法(例如循环)加载不同数据帧中的所有数据文件吗?
编辑:
E.g数据:
V1 V2 V3 V4 V5 V6 V7 V8 V9
100 0 100 100 0 100 100 100 100
100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100
答案 0 :(得分:3)
您可以将它们全部读入列表中。这可能比黑客攻击全局命名空间更清晰。
files <- dir(directory, pattern = ".txt") # directory is the path to the directory containing the files
dframes <- lapply(files, read.table, quote="\"", comment.char="")
然后,您可以访问列表中的数据框,例如第一个df dframes[[1]]
。如果您更喜欢$
访问语法:
names(dframes) <- sapply(as.character(1:length(files)), function(i) paste("df", i, sep=""))
现在,您可以访问与dframes$df1
答案 1 :(得分:3)
使用lapply
:
allTextFiles <- list.files(pattern = ".txt")
alldfs <- lapply(allTextFiles, function(x) {
textfiles <- read.table(x, quote="\"", comment.char="")
})
alldfs <- lapply(x = alldfs, seq_along(alldfs), function(x, i) {
assign(paste0("data", i), x[[i]], envir=.GlobalEnv)
})
答案 2 :(得分:2)
这样的事情可以解决问题:
files_to_read <- dir(pattern = ".txt") # make sure only the files you want to read are in this dir
n <- 0
for(i in 1:length(files_to_read)){
assign(paste("df",n,sep=""), read.table(files_to_read[i], quote="\"", comment.char=""))
n <- n+1
}
如果您不想在该目录中导入.txt
个文件,则可以创建仅包含要导入的.txt
个文件的新目录,或者进一步自定义pattern
}仅匹配您要导入的文件。