我有一个列表,每个组件都是一个数字向量。组件中有一些通用的数字。下面是一个例子:
ls <- list(c(7, 4, 9), c(5, 9, 2, 19), c(3, 13, 4, 2))
组件% 2的第二个元素已经出现在组件% 1中。组件3的第3和第4个元素已经分别出现在组件1和2中。我想删除后面的组件中已经出现在前面的组件中的元素。对于具体的示例,我想要ls2 <- list(c(7, 4, 9), c(5, 2, 19), c(3, 13))
。
我想写一个R脚本,自动执行上面的任务,它可以推广到其他列表。
4条答案
按热度按时间fnvucqvd1#
使用
setdiff
:b91juud32#
对每个元素使用
setdiff()
,删除所有以前看到的元素。首先,我们需要列出以前看到的元素:然后,对于列表中的每个元素,我们将其与先前看到的元素的累积列表进行比较。注意,我们需要分隔列表的第一个元素:
nkkqxpd93#
您可以
unlist
并检查duplicated
值,然后relist
并使用索引删除重复项:bvk5enib4#
我们可以尝试
stack
+subset
+unstack
它给出了