R 中两个向量之间的差异

问题描述 投票:0回答:4

我有两个向量:

a <- c(1, 1, 3, 4, 5, 7, 9)
b <- c(2, 3, 4, 6, 8, 2)

我想找到第二个向量中的数字,这些数字不在第一个向量中:

dif <- c(2, 6, 8)

我尝试了很多不同的方法(例如合并、不同类型的联接(dplyr 包)、setdiff、比较(比较包)),但我仍然找不到方法。

r vector diff
4个回答
78
投票

您可以使用

setdiff

setdiff(b,a)
#[1] 2 6 8

19
投票

另一种方法,而不是

setdiff
(这可能是更好的选择),是使用
%in%

unique(b[! b %in% a])
#[1] 2 6 8

4
投票

确切的问题已得到解答,但如果有人想查找两个列表之间未共享的所有元素,那么这就是答案:

union(setdiff(a,b), setdiff(b,a))

这里的“a”和“b”可能是这样的

a<-c(1,2,3,4,5)
b<-c(4,5,6,7,8)

0
投票

如果你想要视觉比较,你可以使用waldo

a <- c(1, 1, 3, 4, 5, 7, 9)
b <- c(2, 3, 4, 6, 8, 2)
waldo::compare(sort(a), sort(b))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.