读取同一个表中R中的多个文件,作为不同的变量

时间:2014-02-25 15:18:34

标签: r statistics

我有100个文件,每个文件名为rundataX,其中x是数字。我想在R中的一个名为mydata的表中读取它们。每个rundata文件都有3列:tmXscoreXcurrentX。我可以在这样的文件中阅读:

mydata = read.table("rundata1", sep= " ", 
                    col.names=c("tm1","score1","current1"))

如果我在下一个文件中读到,之前的变量似乎消失了:

mydata = read.table("rundata2", sep= " ", 
                    col.names=c("tm2","score2","current2"))

是否有一些选项允许我“追加”列(以及变量)。请注意,它们都具有不同的长度(行数)。我在这里找到的大多数帖子都在多个文件中,用于分割行,而不是列。

2 个答案:

答案 0 :(得分:3)

这是list.fileslapply

的方法
filenames <- list.files(pattern = "^rundata\\d+$")
dat       <- do.call(rbind, lapply(filenames, read.table, sep = " ", 
                                   col.names = c("tm", "score", "current")))

在您的代码中,每次使用mydata时都会覆盖read.table

答案 1 :(得分:1)

如果您不介意使用循环,可以尝试:

file.names    <- paste("rundata", 1:100, sep= "") 
tm.names      <- paste("tm",      1:100, sep= "") 
score.names   <- paste("score",   1:100, sep= "") 
current.names <- paste("current", 1:100, sep= "") 

my.data.list <- list()
for(i in 1:100){
  my.data.list[[i]] <- read.table(file.names[i], sep= " ", 
                                  col.names=c(tm.names[i], score.names[i], 
                                              current.names[i])            )
}
my.data <- do.call(cbind, my.data.list)
rm(my.data.list, file.names, tm.names, score.names, current.names)