如何在R中读取不同的.txt文件,但不能将它们连接到同一个data.frame中?

时间:2016-07-12 15:04:51

标签: r dataframe

我需要从一个文件夹中将许多.txt个文件读入数据框。 .txt文件名的格式为angles_*_dat.result(例如angles_1_dat.resultangles_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

3 个答案:

答案 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 }仅匹配您要导入的文件。