【问题标题】:Creating a master data frame创建主数据框
【发布时间】:2016-02-22 04:13:10
【问题描述】:

我在从文件列表创建主数据框时遇到问题,当我加载它时,它给我的只是最后一个 ID 号,而不是其余的,帮助?

    options(max.print=10000000)
    pollutant<-function(id)
     {
     for (i in 1:id){
     filenames = sprintf("%03d.csv", i)
      masterframe<-read.csv(filenames)
     }
     realdata<-na.omit(masterframe)
      realdata
      }

我尝试将数据文件的主数据框设置为 id 并使用此代码

              options(max.print=10000000)
               pollutant<-function(id,pollutant){
               for (i in 1:id) {
                filenames=list.files(pattern="csv")
               df.list = lapply(filenames, function(i) na.omit(read.csv(i)))
               master.df = do.call(rbind, df.list)}
               master.df}

但我不断获得所有 332 个文件的主数据框,当我运行它时它不会将自身限制为 id 有什么想法吗?

【问题讨论】:

  • filenames=list.files(pattern="csv"); df.list = lapply(filenames, read.csv); master.df = do.call(rbind, df.list)

标签: r


【解决方案1】:

正如@rawr 发布的链接中所指出的,您每次通过循环都会覆盖masterframe,因此realdata 只是导入的最后一个文件。看起来你想要更像这样的东西:

realdata = list()

for (i in 1:id) {
  filenames = sprintf("%03d.csv", i)
  masterframe <- read.csv(filenames)
  realdata[[filenames]] = na.omit(masterframe)
}

但是,lapply 可能是一种更简洁的方法:

# Get vector of filenames to read
filenames=list.files(pattern="csv")

# Read all the files into a list of data frames
df.list = lapply(filenames, function(x) na.omit(read.csv(x)))

# Combine into a single data frame
master.df = do.call(rbind, df.list)

【讨论】:

    猜你喜欢
    • 2018-07-14
    • 2012-09-11
    • 2020-02-26
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-07-31
    相关资源
    最近更新 更多