2014-02-25 27 views
2

我有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")) 

有一些選項,讓我「追加」列(從而變量)。請注意,它們都具有不同的長度(行數)。我在這裏找到的大多數帖子都是用於分割行的多個文件,而不是列。

回答

3

這裏的方式與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

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) 
相關問題