R

时间:2016-05-31 14:20:13

标签: r

据我了解,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)

thing1thing2的比较是否应该与比较thing2thing3产生相同的结果?如何实现“外部联接”类型的结果(对称集差异),如果我们联合thing1thing2,我们可以看到所有缺少的元素?更喜欢了解R base中的功能,但也会感谢data.tables方法。提前谢谢。

1 个答案:

答案 0 :(得分:9)

setdiff提供不对称差异。在这种情况下,它完成了它在锡上的说法。

  

thing1thing2的比较是否应该与比较thing2thing3产生相同的结果?

嗯,不。但它会产生与比较thing3thing2相同的结果。订单很重要。考虑前两个例子:

第一个示例询问thing1中不在thing2的内容是什么?

> setdiff(thing1, thing2)
[1] 1

您可以尝试相反,thing2中不在thing1的内容是什么?

> setdiff(thing2, thing1)
[1] 4

但在我看来,你问的问题是:

  

thing1thing2的哪些元素未分享?

与以下内容相同:

  

thing1thing2的联合中有哪些元素,而不是两者的交集?

> setdiff(union(thing1, thing2), intersect(thing1, thing2))
[1] 1 4