【发布时间】:2017-10-20 17:10:47
【问题描述】:
我仍在学习 DataCamp for R 的课程,所以如果这个问题看起来很幼稚,请原谅我。
考虑以下(非常人为的)示例:
library(dplyr)
library(tibble)
type <- c("Dog", "Cat", "Cat", "Cat")
name <- c("Ella", "Arrow", "Gabby", "Eddie")
pets = tibble(name, type)
name <- c("Ella", "Arrow", "Dog")
type <- c("Dog", "Cat", "Calvin")
favorites = tibble(name, type)
anti_join(favorites, pets, by = "name")
setdiff(favorites, pets, by = "name")
这两者都返回完全相同相同的数据:
> anti_join(favorites, pets, by = "name")
# A tibble: 1 × 2
name type
<chr> <chr>
1 Dog Calvin
> setdiff(favorites, pets, by = "name")
# A tibble: 1 × 2
name type
<chr> <chr>
1 Dog Calvin
他们每个人的文档似乎只表明了一个细微的区别:setdiff 返回行,但 anti_join 没有。根据我的测试,情况似乎并非如此。
有人可以向我解释这两者之间的真正区别,也许可以提供一个更好的例子来更清楚地说明这些区别吗? (这是 DataCamp 没有特别有用的领域。)
【问题讨论】:
-
dplyr::setdiff兑现by参数/键? -
@lukeA 我在执行后直接从 RStudio 中复制了该代码。因此,如果对
setdiff的调用已从dplyr包中解决,我会假设是这样。根据dplyr文档,setdiff的签名是setdiff(x, y, ...),因此它接受传递给其他调用的参数。也许我只是走运了。 :)