在R中组合列表的向量

时间:2017-07-04 10:24:44

标签: r list vector

我有一个列表包含不同长度的矢量数量如下:

lst <- list(c(1,2), c(1,2), c(4,5,10,11,12,13), c(7,8,9))
lst

[[1]]
[1] 1 2

[[2]]
[1] 1 2

[[3]]
[1]  4  5 10 11 12 13

[[4]]
[1] 7 8 9

[[5]]
[1] 7 8 9

如何组合和删除重复的向量,使其类似于下面的列表:

[[1]]
[1] 1 2

[[2]]
[1]  4  5 10 11 12 13

[[3]]
[1] 7 8 9

对于重复的向量,我可以使用唯一函数

3 个答案:

答案 0 :(得分:1)

这是一个选项。我们unlist list,将vectorduplicatedrelist合并为listskeletonlist相同原始list,子集&#39; l1&#39;基于逻辑Map Filterlist Filter(length, Map(`[`, l1, relist(!duplicated(unlist(l1)), skeleton = l1))) #[[1]] #[1] 1 2 #[[2]] #[1] 4 5 10 11 12 13 #[[3]] #[1] 7 8 9 #[[4]] #[1] 14 15 #[[5]] #[1] 19 20 元素包含0个元素。

l1 <- list(1:2, 1:2, c(4, 5, 10, 11, 12, 13), 7:9, 7:9, 10:13, 10:13, 
  c(4, 10, 11, 12, 13), 14:15, 19:20)

数据

activity.main.xml

答案 1 :(得分:0)

我已经编辑了你的答案,给出了一个可重复的例子。如果这不能正确说明您的问题,请告诉我。如果是这样,这是微不足道的:

unique(lst)

答案 2 :(得分:0)

对不起,我的问题是错误,列表是

[1]  1 2
[1]  1 2
[1]  10  12 13
[1]  7 8 9
[1]  7 8 9
[1]  5 11 12 13
[1]  10 11 12 13
[1]  4 10 11 12 13
[1]  14 15
[1]  19 20

我想获得以下列表:

[1]  1 2
[1]  4 5 10 11 12 13
[1]  14 15
[1]  19 20

通过使用唯一函数,我可以删除所有重复的向量 但是,我希望将所有共享至少一个元素的向量组合起来 EX (10 12 13)

结合起来
   [1]  5 11 12 13
    [1]  10 11 12 13
    [1]  4 10 11 12 13

获取

4 5 10 11 12 13