【发布时间】:2021-02-17 02:34:06
【问题描述】:
我有两个列表list1 和list2,每个列表都包含由其名称唯一标识的数据框或数据表。我想结合list1 和list2 键入数据集的名称。我希望两个列表的元素都出现在组合列表中。我已经尝试了很多来自 stackoverflow 的解决方案,例如 do.call(c, list1, list2)、Map(c, list1, list2) 或 mapply、merge、list.join。我获得的最大成功是通过创建数据框名称的键并将Map 与键一起使用,但它们没有保留组合列表中不匹配的元素,例如keys <- unique(c(names(list1), names(list2)) 和combined_list <- Map(rbind, list1[keys], list2[keys])。但它们都没有按我想要的方式为我工作。
基本上,我想对两个列表中包含的同名数据集执行rbind。这些列表可能有不同的长度,并且有不同的元素,有时还会有重叠的元素。
list1 和 list2 是什么样子的:
a <- data.frame(id = 1:5, type =c("a", "b", "c", "d", "e"))
b <- data.frame(id = 6:10, type =c("f", "g", "h", "i", "j"))
c <- data.frame(id = 11:15, type =c("k", "l", "m", "n", "o"))
list1 <- list(a=a,b=b,c=c)
a <- data.frame(id = 16:20, type =c("p", "q", "r", "s", "t"))
b <- data.frame(id = 21:25, type =c("u", "v", "w", "x", "y"))
e <- data.frame(id = 26:30, type =c("z", "ab", "ac", "ad", "ae"))
f <- data.frame(id = 31:35, type =c("ba", "bb", "bc", "bd", "be"))
list2 <- list(a=a,b=b,e=e, f=f)
预期的结果应该是这样的:
a <- data.frame(id = c(1:5, 16:20), type =c("a", "b", "c", "d", "e", "p", "q", "r", "s", "t"))
b <- data.frame(id = c(6:10,21:25), type =c("f", "g", "h", "i", "j", "u", "v", "w", "x", "y"))
c <- data.frame(id = 11:15, type =c("k", "l", "m", "n", "o"))
e <- data.frame(id = 26:30, type =c("z", "ab", "ac", "ad", "ae"))
f <- data.frame(id = 31:35, type =c("ba", "bb", "bc", "bd", "be"))
combined_list <- list(a=a, b=b, c=c, e=e, f=f)
非常感谢您在这方面的任何回复。 附:这是我关于 SO 的第一篇文章。 :)
【问题讨论】: