0

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

这只会产生一个很长的值。

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

4

1 回答 1

2

merge函数用于连接公共列值(通常称为 a 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
于 2018-04-24T19:51:49.393 回答