我有N
个列表,它们有一些相同的列名。这是一个有两个列表的MWE:
ls <- list()
ls[[1]] <- list("a"=1:2,
"b"=20,
"c"=numeric(0))
names(ls[[1]]$a) <- c("a1", "a2")
ls[[2]] <- list("a"=3:4,
"b"=30,
"c"=1:4,
"d"="f")
names(ls[[2]]$a) <- c("a1", "a2")
是否可以将这些合并到结果列表lsRes
中,其中lsRes
具有以下属性:
答案 0 :(得分:1)
假设我们需要将输出也作为list
,我们创建公共names
,然后将那些不是任何常用名称分配给NA
nm1 <- unique(unlist(sapply(ls, names)))
lsRes <- lapply(ls, function(x) {x[setdiff(nm1, names(x))] <- NA; x})
lengths(lsRes)
#[1] 4 4
如果我们需要list
个4个元素,请使用transpose
library(purrr)
lsRes %>%
transpose