【问题标题】:adding a list of vectors to a data.frame in R将向量列表添加到 R 中的 data.frame
【发布时间】:2010-09-08 08:33:30
【问题描述】:

如何将向量列表添加到预先分配的 data.frame 中,以便向量构成 data.frame 的行?

例如。

ll<-list(c(1,2,3),c(2,3,4))
dd<-data.frame(matrix(nrow=10,ncol=3))  

我需要 dd 看起来像

1 2 3
2 3 4

【问题讨论】:

    标签: r


    【解决方案1】:
    do.call(rbind, ll)
    

    添加到现有数据框

    rbind(dd, do.call(rbind, ll)
    # OR 
    do.call(rbind, c(ll, list(dd))
    

    如果您对许多数据帧执行此操作,请参阅 plyr 包中的 rbind.fill 以获得更有效的方法。

    【讨论】:

      【解决方案2】:

      这个问题有些奇怪:您构建了一个包含 10 行的数据框,其中填充了 NA 值,但您需要 dd 只有 2 行。

      首先回答您的问题:有时显而易见的解决方案也不错。

      ll<-list(c(1,2,3),c(2,3,4))
      dd<-data.frame(matrix(nrow=5,ncol=3))
      
      for(i in 1:length(ll)){
        dd[i,] <- ll[[i]]
      }
      dd
      

      如果您正盯着丑陋的 for 循环看:在这种情况下,您实际上可以毫无问题地使用 for 循环。但这使 dd 拥有大量的 NA 值。如果你想摆脱它们,你可以将你的数据框初始化为

      dd<-data.frame(X1=numeric(0),X2=numeric(0),X3=numeric(0))
      

      这会给你一个空的数据框,或者你使用 complete.cases() 来删除所有的 NA:

      dd <- dd[complete.cases(dd),]
      

      【讨论】:

        猜你喜欢
        • 2015-05-16
        • 1970-01-01
        • 2020-02-07
        • 2019-12-08
        • 2021-04-17
        • 2022-01-24
        • 2019-09-29
        • 2019-05-21
        • 2021-04-19
        相关资源
        最近更新 更多