【发布时间】:2020-11-22 20:43:34
【问题描述】:
我有一个看起来像这样的列表
[[1]]
1 2
[[2]]
10 20 30
[[3]]
4
我想把它转换成这样的数据框
column1 column2 column3
1 2 NA
10 20 30
4 NA NA
非常感谢任何帮助
【问题讨论】:
标签: 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
非常感谢任何帮助
【问题讨论】:
标签: r list dataframe tidyverse
一个选项是获取list元素的lengths,获取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)
【讨论】:
另一个选项,如@akrun 回答所介绍的数据,将是:
library(purrr)
library(dplyr)
lst1 %>%
map_dfr(~as.data.frame(t(as.matrix(.)))) %>%
rename_with(~sub("V", "column",.))
它也可以使用unlist 或as.numeric 而不是as.matrix。
【讨论】:
traceback() 调试错误