我有一个列表包含不同长度的矢量数量如下:
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
对于重复的向量,我可以使用唯一函数。
答案 0 :(得分:1)
这是一个选项。我们unlist
list
,将vector
与duplicated
,relist
合并为list
,skeleton
与list
相同原始list
,子集&#39; l1&#39;基于逻辑Map
Filter
和list
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