我有两个向量:
a <- c(1, 1, 3, 4, 5, 7, 9)
b <- c(2, 3, 4, 6, 8, 2)
我想找出第二个向量中不在第一个向量中的数字:
dif <- c(2, 6, 8)
我已经尝试了许多不同的方法(例如合并,不同类型的连接(dplyr包),setdiff,比较(compare包)),但仍然找不到方法。
setdiff
。setdiff(b,a)
#[1] 2 6 8
除了使用可能更好的setdiff
之外,另一种替代方法是使用%in%
unique(b[! b %in% a])
#[1] 2 6 8
unique(b[! b %in% a]
对于这个例子非常有效。但是,请问您是否看到任何原因,为什么当更改向量 a = c(4,2,3)
和 b = c(2,3)
时我得到了 numeric(0)
的答案?这对我来说没有意义。 - maycca这个问题已经得到了确切的回答,但如果有人想要查找两个列表之间没有共享的所有元素,则以下是答案:
union(setdiff(a,b), setdiff(b,a))
这里的'a'和'b'可以是类似于
a<-c(1,2,3,4,5)
b<-c(4,5,6,7,8)
setdiff(1:3,2:4)
的结果是:> 1 - stakowerflolsetdiff
给出了第一个与第二个的差异。如果你想要两者,那么你可能需要使用 union 和 setdiff。 - akrun