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

问题描述:

我有100个文件,每个文件名为rundataX,其中x是数字。我想在R中读一个名为mydata的表。每个rundata文件有3列:tmX,scoreXcurrentX。我可以在一个文件中这样写着:在同一个表中读取R中的多个文件,作为不同的变量

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

如果我在未来的文件中读取,它前面的两个变量似乎消失:

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

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

这里的方式与list.fileslapply

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

在代码中,你每次使用read.table时间覆盖mydata

如果你不介意使用一个循环,你可以尝试:

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)