【发布时间】:2021-07-10 17:40:41
【问题描述】:
我正在为如何用“简单的英语”术语阅读 R 中的 %in% 运算符而苦苦挣扎。我已经看到了多个使用它的代码示例,但没有清楚地解释如何阅读它。
例如,我发现管道运算符%>% 的术语建议将其读作“然后”。我正在为%in% 运算符寻找类似的翻译。
在R for Data Science一书中标题为“数据转换”的第 5 章中,有一个来自航班数据集的示例,内容如下:
以下代码查找在 11 月或 12 月起飞的所有航班:
filter(flights, month == 11 | month == 12)这个问题的一个有用的简写是
x %in% y。这将选择 x 是 y 中的值之一的每一行。我们可以用它来重写上面的代码:nov_dec <- filter(flights, month %in% c(11, 12))
当我读到“这个问题的一个有用的简写是x %in% y”,然后再看nov_dec的例子,似乎这应该被理解为“选择月份所在的每一行(x ) 是 c(11,12) (y) 中的值之一,”这对我来说没有意义。
但是我的大脑想将其解读为“在月份列中查找 11 和 12”。在此示例中,x 似乎应该是 11 和 12 的值,%in% 运算符正在检查这些值是否在 y 中,这将是月份列。我的大脑正在从从右到左阅读这个例子。
但是,我发现的所有代码示例似乎都表明这个 x %in% y 应该从左到右而不是从右到左阅读。
谁能帮我阅读外行术语中的%in% 运算符吗?示例将不胜感激。
【问题讨论】:
-
%in%将返回一个逻辑向量for each element ofx来回答这个问题,x是否在y中找到?一次考虑一个元素:是y中的x的第一个元素,是y中的x的第二个元素,依此类推。 -
x的值是否在向量y中找到? -
A %in% B 询问 A 中的值是否在称为 B 的向量(或列表)内。您可以在 filter() 函数中改进其实现的描述为“选择那些变量 x 中的值存在于列表 y 的值中的行”。
-
具体来说,比如
x = 12和y = c(11, 12)。在这种情况下,x %in% y询问12是否在向量c(11, 12)中。因为它是,x %in% y返回TRUE。说z = 13,然后你问z %in% y,然后你得到FALSE,因为13不是向量c(11, 12)中的元素。换句话说,过滤器示例保留数据集中flights中的行,其中month为11或12,并删除所有其他行。 -
它可能是月份的数字表示。例如,如果月份是六月和
month=6,那么x = month = 6那么x %in% y可以返回FALSE,因为6不等于11或12。如果月份是 12 月的数字表示,则此语句将为TRUE。
标签: r operators terminology