我有一个嵌套列表列表。每个嵌套列表的长度不同。列表中的每个值都分配了一个名称。我想从列表中创建一个数据框,但要对列表进行排序,以便每个值都位于数据框中的正确列中。
用英文很难解释,希望这个示例代码能解释一下:
list <- list(1,1:2,1:3)
names(list[[1]]) <- "a"
names(list[[2]]) <- c("c", "a")
names(list[[3]]) <- c("a","c","b")
table <- matrix(NA, nrow = 3, ncol = 3)
colnames(table) <- c("a","b","c")
> list
[[1]]
a
1
[[2]]
c a
1 2
[[3]]
a c b
1 2 3
> table
a b c
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
我想像这样将列表排序到表中:
>table
a b c
list[[1]] 1 NA NA
list[[2]] 2 NA 1
list[[3]] 1 3 2
以便列表中值的名称与表中列的名称相匹配,list[[1]]
转到第 1 行,list[[2] ]
转到第 2 行等。
如有任何帮助,我们将不胜感激。
(附加信息:
我的实际数据集有数万个嵌套列表,最长的列表长度为26。
我在 Windows 10 上运行 32 位 R 3.2.4)
最佳答案
我们可以尝试 gtools
包中的 smartbind()
结合 do.call()
。
library('gtools')
do.call("smartbind", list)
# a c b
#1 1 NA NA
#2 2 1 NA
#3 1 2 3
关于r - 嵌套列表 : Ordering it into a dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36412044/