首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建主数据框架

创建主数据框架
EN

Stack Overflow用户
提问于 2016-02-18 18:42:50
回答 1查看 289关注 0票数 0

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

代码语言:javascript
复制
    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,并使用以下代码

代码语言:javascript
复制
              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。

EN

回答 1

Stack Overflow用户

发布于 2016-02-18 20:13:39

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

代码语言:javascript
复制
realdata = list()

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

但是,lapply可能是一种更干净的方法:

代码语言:javascript
复制
# 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35489833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档