我有100个文件,每个文件名为rundataX,其中x是数字。我想在R中的一个名为mydata的表中读取它们。每个rundata文件都有3列:tmX
,scoreX
和currentX
。我可以在这样的文件中阅读:
mydata = read.table("rundata1", sep= " ",
col.names=c("tm1","score1","current1"))
如果我在下一个文件中读到,之前的变量似乎消失了:
mydata = read.table("rundata2", sep= " ",
col.names=c("tm2","score2","current2"))
是否有一些选项允许我“追加”列(以及变量)。请注意,它们都具有不同的长度(行数)。我在这里找到的大多数帖子都在多个文件中,用于分割行,而不是列。
答案 0 :(得分:3)
这是list.files
和lapply
:
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)