将2个列表中的元素合并到R中的相同子集中

时间:2018-07-05 23:17:55

标签: r

我有2个列表,每个列表包含2个子集:

listA
[[1]]
1 2 3 5 14 15 17 20
[[2]]
26 27 29 32 35 40

listB
[[1]]
4 6 7 8 9 10 11 12 13 14 16 18 19 21 22 23 24 25
[[2]]
28 30 31 33 34 36 37 38 39

我需要创建一个新列表,其中包含两个列表中各个子集的组合元素。

我希望得到如下列表:

list_AB
[[1]]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #Combine [[1]] of listA and listB
[[2]]
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40   #Combine [[2]] of listA and listB

谢谢

2 个答案:

答案 0 :(得分:3)

怎么样

mapply(c, listA, listB, SIMPLIFY = FALSE)

如果结果应排序而不重复,则

mapply(function (x, y) sort(unique(c(x, y))), listA, listB, SIMPLIFY = FALSE)

答案 1 :(得分:1)

有了tidyverse,我们可以做到

library(purrr)
pmap(list(listA, listB), ~ sort(c(...)))
#[[1]]
# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 14 15 16 17 18 19 20 21 22 23 24
#[26] 25

#[[2]]
# [1] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 49

数据

listA <- list(c(1, 2, 3, 5, 14, 15, 17, 20), c(26, 27, 29, 32, 35, 49))

listB <- list(c(4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 21, 22, 
         23, 24, 25), c(28, 30, 31, 33, 34, 36, 37, 38, 39))