R中列表的组合向量
我有一个包含不同长度向量的列表,如下所示:R中列表的组合向量,r,list,vector,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 对于重复向量,我可以使用唯一函数 这里有一个选项。我们取消列出列表,得到一个重复的逻辑向量,将其重新列出到一个列表,该列表与原始列表具有相
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
对于重复向量,我可以使用唯一函数 这里有一个选项。我们
取消列出列表
,得到一个重复的逻辑向量
,将其重新列出到一个列表
,该列表与原始列表
具有相同的框架
,基于逻辑列表
使用映射
对“l1”进行子集划分,并筛选出包含0个元素的列表
元素
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
数据
l1我编辑了你的答案,给出了一个可重复的例子。请让我知道,如果这不能正确地说明你的问题了。如果是这样,这是微不足道的:
unique(lst)
对不起,我的问题有错,名单是
[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] 1 2
[[2]]
[1] 4 5 10 11 12 13
[[3]]
[1] 7 8 9
[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
@mbr文章中提到的关于唯一性的OP
,它可能无法与其他重复元素一起工作。与5个列表元素相比,它还获得7个list
元素。请详细说明您的第一行代码是做什么的?@KarstenW。更新了一些描述。谢谢,我看到它工作了,但我仍然需要理解它,特别是复制的
在这个设置中是如何有用的。它不会工作,并且已经在OP'post中提到了它,因为提供的示例unique
工作正常。如果它在OP的真正问题上不起作用,那么我们需要一个不同的例子。我已经在我的帖子中展示了这个例子。你可以检查你的代码,问题不清楚。是否要删除所有重复的数字,无论它们出现在何处,还是需要将任何向量完全包含在另一个向量中才能删除?当前的一个答案处理第一种情况。因此,您希望子列表[1]10 11 12 13
也被删除,因为这些列表包含在[1]4 5 10 11 12 13
中。看看这个答案,它可能会解决您的问题:我再次道歉,我后来意识到我的错误。没关系。谢谢你的来信
4 5 10 11 12 13