将列表转换为R中具有多个列的data.frame

时间:2020-08-02 16:19:28

标签: r list dataframe tidyverse

我有一个看起来像这样的列表

[[1]]
1 2
[[2]]
10 20 30 
[[3]]
4

,我想将其转换为如下所示的数据框

column1 column2 column3
   1       2      NA
   10      20     30
   4       NA      NA

我们非常感谢您的帮助

2 个答案:

答案 0 :(得分:1)

一个选择是获取lengths元素中的list,获取max的长度,在长度小于max的结尾处填充NA和dbindlist元素

mx <- max(lengths(lst1))
out <- do.call(rbind.data.frame, lapply(lst1, `length<-`, mx))
names(out) <- paste0('column', 1:3)
out
#  column1 column2 column3
#1       1       2      NA
#2      10      20      30
#3       4      NA      NA

数据

lst1 <- list(1:2, c(10, 20, 30), 4)

答案 1 :(得分:0)

由@akrun答案引入数据的另一种选择是:

library(purrr)
library(dplyr)
lst1 %>%
    map_dfr(~as.data.frame(t(as.matrix(.)))) %>%
    rename_with(~sub("V", "column",.))

它也可以使用unlistas.numeric代替as.matrix

相关问题