我有一份清单,如下所示。我希望将其转换为所需格式的数据帧。
myList中:
[[1]]
NULL
[[2]]
[[2]]$`file`
[1] "ABC"
[[2]]$New
[1] 21
[[2]]$Old
[1] 42
[[3]]
[[3]]$`file`
[1] "CDF"
[[3]]$NEW
[1] 206
[[3]]$Old
[1] 84
我想将此列表对象列表转换为所需格式的数据帧:
file New Old
ABC 21 42
CDF 206 84
提前致谢!
答案 0 :(得分:4)
我们可以在转换为map_df
tibble
library(tidyverse)
myList %>%
map_df(as_tibble)
# A tibble: 2 x 3
# file New Old
# <chr> <dbl> <dbl>
#1 ABC 21 42
#2 CDF 206 84
或bind_rows
bind_rows(myList)
# A tibble: 2 x 3
# file New Old
# <chr> <dbl> <dbl>
#1 ABC 21 42
#2 CDF 206 84
myList <- list(NULL, list(file = 'ABC', New = 21, Old = 42),
list(file = 'CDF', New = 206, Old = 84))
答案 1 :(得分:2)
看起来以下情况可行。
do.call(rbind, lapply(list, as.data.frame))
其中list
是您的列表。
答案 2 :(得分:2)
类似(ls
是您的列表):
df <- data.frame(matrix(unlist(ls), ncol = max(lengths(ls)), byrow = TRUE))
如果列名很重要,那么
names(df) <- names(ls[[which(lengths(ls)>0)[1]]])