有人可以解释 R 软件中 %in% 的参数顺序吗?

Can someone explain the order of arguments for %in% in R software?

"gapminder" 是一个数据集,其中包含每个国家/地区和每年的生育率和 GDP 等变量。我想访问和比较 2015 年土耳其和斯里兰卡的生育率。

library(dslabs)
data(gapminder)

当我使用 %in% 时,我如何知道哪个参数先出现?在我的 R 基础课程中,有人解释说,首先我们写下我们要查找的内容,然后是我们在其中搜索它的池。所以在我的例子中,我们在所有国家中寻找斯里兰卡和土耳其这两个国家。代码应该是

gapminder %>%
  filter(year == 2015 & c("Sri Lanka", "Turkey") %in% country)

但这是错误的,returns 与提供的代码不同:

gapminder %>%
  filter(year == 2015 & country %in% c("Sri Lanka", "Turkey"))

然而文档清楚地指出: "x %in% table, x = the values to be matched (for us Turkey, Sri Lanka), table = the values to be matched against (list of countries)"。那为什么我的第一个代码是错误的呢?谁能给我一个简单的规则,先写哪个参数?

%in% 查找一个对象的元素是否存在于另一个元素中。它在内部使用 match 和 returns 逻辑(布尔)值。 示例:

a <- c("C", "A", "B")
b <- c("A", "B")

a %in% b
# [1] FALSE  TRUE  TRUE
b %in% a
# [1] TRUE TRUE
match(a, b)
# [1] NA  1  2
match(b, a)
# [1] 2 3

```dplyr 和我相信所有 tidyverse 系列包都将 R 数据框作为参数。确保 gapminder 是 R 数据帧。您可以使用 class(gapminder) 检查对象类型。除此之外,您的代码是正确的,应该会产生所需的输出。至于参数的顺序,%>% 之后的第一个函数将采用 %>% 之前的对象。在这种情况下,filter 函数的第一个参数是 gapminder。那应该给你 2015 年的数据,国家是斯里兰卡和土耳其


data(gapminder)
gapminder %>%
  filter(year == 2015 & country %in% c("Sri Lanka", "Turkey"))