【问题标题】:Reading in multiple files in R in the same table, as different variables在同一个表中读取 R 中的多个文件,作为不同的变量
【发布时间】:2014-02-25 15:18:33
【问题描述】:

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

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

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    这里是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

    【讨论】:

      【解决方案2】:

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

      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)
      

      【讨论】:

        猜你喜欢
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-27
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多