合并R中的列表列表

时间:2018-04-24 19:45:33

标签: r list merge

我有一个列表列表,其中一些列表为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))

只会产生很长的价值。

我错过了什么?谁能帮助我?非常感谢您的投入。

1 个答案:

答案 0 :(得分:2)

merge函数用于连接公共列值的数据(通常称为join)。您需要使用rbind代替( r 代表行,使用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