我有一个看起来像这样的列表
[[1]]
1 2
[[2]]
10 20 30
[[3]]
4
,我想将其转换为如下所示的数据框
column1 column2 column3
1 2 NA
10 20 30
4 NA NA
我们非常感谢您的帮助
答案 0 :(得分:1)
一个选择是获取lengths
元素中的list
,获取max
的长度,在长度小于max
的结尾处填充NA和dbind
个list
元素
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",.))
它也可以使用unlist
或as.numeric
代替as.matrix
。