将大型列表列表保存到数据框保持列表属性

时间:2018-02-05 18:00:14

标签: r list dataframe data-processing

我有一个包含以下属性的完整ID列表的大量列表

list1 <- c(145540,145560, 157247, 145566)
list2 <- c(166927, NA, NA, NA)
list3 <- c(145592, 145560, 145566, NA)
list <- list(list1, list2, list3)

现在我想将这个大型列表强制转换为data.frame,同时保留嵌套列表的列表属性。所需的输出应如下所示:

list1 list2 list3
145540 166927 145592
145560 NA 145560
157247 NA 145566
145566 NA NA

非常感谢你的帮助。

`

2 个答案:

答案 0 :(得分:0)

将你的向量列表拼凑在一起(假设你只有向量作为上层列表的元素)

as.data.frame(sapply(list, rbind))
     V1   V2   V3
1 145540 166927 145592
2 145560     NA 145560
3 157247     NA 145566
4 145566     NA     NA

答案 1 :(得分:0)

do.call(cbind.data.frame,list)
  c(145540, 145560, 157247, 145566) c(166927, NA, NA, NA)
1                            145540                166927
2                            145560                    NA
3                            157247                    NA
4                            145566                    NA
  c(145592, 145560, 145566, NA)
1                        145592
2                        145560
3                        145566
4                            NA
> Reduce(cbind.data.frame,list)
    init x[[i]] x[[i]]
1 145540 166927 145592
2 145560     NA 145560
3 157247     NA 145566
4 145566     NA     NA
> Reduce(cbind,list)
       init              
[1,] 145540 166927 145592
[2,] 145560     NA 145560
[3,] 157247     NA 145566
[4,] 145566     NA     NA

然后你可以设置名称。

虽然另一方面如果名称是预设的,即list <- list(list1=list1, list2=list2, list3=list3),那么

do.call(cbind.data.frame,list)

   list1  list2  list3
1 145540 166927 145592
2 145560     NA 145560
3 157247     NA 145566
4 145566     NA     NA