【问题标题】:merge list of lists in R合并R中的列表列表
【发布时间】:2018-04-24 19:45:32
【问题描述】:

我有一个列表列表,其中一些列表为 NULL(不包含任何内容),而一些列表包含 12 列和 1 行。假设这个列表列表被命名为:pages。

我想将包含 12 列和 1 行的列表合并到一个数据框中。这样我就有了一个 12 列和 x 行的最终数据框。

我第一次尝试:

final_df <- Reduce(function(x,y) merge(x, y, all=TRUE), pages)

它产生了一个包含正确 12 列但没有行的数据框,因此它是空的。

然后我尝试了:

listofvectors <- list()
for (i in 1:length(pages))  {listofvectors <- c(listofvectors, pages[[i]])}

只是将每个列表粘贴到彼此下方。

我终于试着玩了:

final<-do.call(c, unlist(pages, recursive=FALSE))

这只会导致一个很长的值。

我错过了什么?谁能帮帮我?非常感谢您的意见。

【问题讨论】:

    标签: r list merge


    【解决方案1】:

    merge 函数用于连接公共列值上的数据(通常称为join)。您需要改用rbindr 表示行,使用cbind 将列粘在一起)。

    do.call(rbind, pages) # equivalent to rbind(pages[[1]], pages[[2]], ...)
    do.call(rbind, pages[lengths(pages) > 0]) # removing the 0-length elements
    

    如果您还有其他问题,请在您的问题中提供可重现的示例。此代码适用于此示例:

    x = list(data.frame(x = 1), NULL, data.frame(x = 2))
    do.call(rbind, x)
    #   x
    # 1 1
    # 2 2
    

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 2013-07-24
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多