据我了解,setdiff()
比较了两个向量,并给出了在一个向量中出现但在另一个向量中不出现的元素。如果是这样,那么给出这些载体......
thing1 <- c(1,2,3)
thing2 <- c(2,3,4)
thing3 <- c(1,2,3)
...这是我的结果。
setdiff(thing1,thing2)
> [1] 1
setdiff(thing2,thing3)
> [1] 4
setdiff(thing1,thing3)
> numeric(0)
thing1
和thing2
的比较是否应该与比较thing2
和thing3
产生相同的结果?如何实现“外部联接”类型的结果(对称集差异),如果我们联合thing1
和thing2
,我们可以看到所有缺少的元素?更喜欢了解R base中的功能,但也会感谢data.tables
方法。提前谢谢。
答案 0 :(得分:9)
setdiff
提供不对称差异。在这种情况下,它完成了它在锡上的说法。
thing1
和thing2
的比较是否应该与比较thing2
和thing3
产生相同的结果?
嗯,不。但它会产生与比较thing3
和thing2
相同的结果。订单很重要。考虑前两个例子:
第一个示例询问thing1
中不在thing2
的内容是什么?
> setdiff(thing1, thing2)
[1] 1
您可以尝试相反,thing2
中不在thing1
的内容是什么?
> setdiff(thing2, thing1)
[1] 4
但在我看来,你问的问题是:
thing1
和thing2
的哪些元素未分享?
与以下内容相同:
thing1
和thing2
的联合中有哪些元素,而不是两者的交集?
> setdiff(union(thing1, thing2), intersect(thing1, thing2))
[1] 1 4