"gapminder "是一个数据集,其中有每个国家和每年的生育率和国内生产总值等变量。我想访问并比较2015年土耳其和斯里兰卡的生育率。
library(dslabs)
data(gapminder)
当我使用%in%的时候,我怎么知道哪个论点在先?在我的R基础课程中,有人解释说,首先我们要写出我们要找的东西,然后写出我们搜索它的池子。所以在我的例子中,我们在所有国家中寻找斯里兰卡和土耳其这两个国家。代码应该是
gapminder %>%
filter(year == 2015 & c("Sri Lanka", "Turkey") %in% country)
但这是错误的,返回的不是所提供的代码。
gapminder %>%
filter(year == 2015 & country %in% c("Sri Lanka", "Turkey"))
然而文档中明确写道:"x %in% table, x = 要匹配的值(对于我们土耳其、斯里兰卡),table = 要匹配的值(国家列表)"。那为什么我的第一个代码是错误的呢?谁能给我一个简单的规则,先写哪个参数?
%in%
查找一个对象的元素是否存在于另一个元素中。它内部使用 match
并返回逻辑(布尔)值。例如:
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"))