r - 将不同长度的列表组合成数据帧

标签 r lapply cbind

我有像下面的 SampleData 这样的数据,其中有不同长度的列表,我想将它们合并到像下面的所需结果这样的数据框中。我尝试使用 qpcR 包中的 lapply 和 cbind.na (如下例所示),但由于某种原因,它不允许我将结果转换为数据帧。如果我只使用了两个列表和 cbind.na ,它将组合它们并将 NA 添加到末尾,就像我想要的那样,但是当我尝试在 lapply 中使用它时,它只会将它们保留为不同长度列表的列表。非常感谢任何提示。

SampleData<-list(list(1,2,3),list(1,2),list(3,4,6,7))

Desired Result:
structure(list(V1 = c(1, 2, 3, NA), V2 = c(1, 2, NA, NA), V3 = c(3, 
4, 6, 7)), .Names = c("V1", "V2", "V3"), row.names = c(NA, -4L
), class = "data.frame")


Example Code:

lapply(SampleData,qpcR:::cbind.na)

最佳答案

这是一个修改后的版本,带有 length<-作业

setNames(do.call(cbind.data.frame, lapply(lapply(SampleData, unlist), 
        `length<-`, max(lengths(SampleData)))), paste0("V", 1:3))
#  V1 V2 V3
#1  1  1  3
#2  2  2  4
#3  3 NA  6
#4 NA NA  7

关于r - 将不同长度的列表组合成数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774843/

相关文章:

r - 从...函数参数中制作一个列表

r - 如何使用 R 环境中的 data.frames 制作功能列表?

html - 更改标题样式可格式化 R

r - grepl 用于 dplyr sql 表?

r - 将 lapply 输出保存为数据帧循环

R:通过键变量绑定(bind)列

r - 为 `rbind` 调度 `cbind` 和 `data.frame`

带有 lapply 的 data.frames 列表中的 R 名称 colnames 和 rownames

r - 计算向量列表中的新元素

r - cbind 列表中的特定列(没有 dplyr 包)