如何在R中查找一个列表中不在另一个列表中的元素

6
我有两个列表,它们具有相同的向量,但长度不同。
list1 <- list(a = 1:10, b = 3:20)
list2 <- list(a = c(2,5,8), b = c(3,5,11,20))

我希望从每个向量中在list1找到在相应向量中不存在于list2的元素。有类似的问题在R以外的其他脚本语言中得到了解决。
我期望最终的列表是:
lst <- list(a=c(1,3,4,6,7,9,10),b=c(4,6:10,12:19))

感谢您的帮助。
1个回答

10

我们可以使用

mapply(setdiff,list1,list2)
#$a
#[1]  1  3  4  6  7  9 10

#$b
#[1]  4  6  7  8  9 10 12 13 14 15 16 17 18 19

我只是想问一下,我们是否可以假设list1list2始终“对齐”,具有相同数量的命名元素以相同的顺序。如果不是这样,情况会变得更加复杂。 - joran
好的,我没有完全理解,或者说当我最初阅读时它并不是那么清晰。 - joran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接