我已阅读文档,并尝试使用Google搜索;它应该是一件简单的事情,但它似乎不适合我;所以我大胆地出去询问是否有人在这里可以解释dplyr的between()
是如何工作的。
# Explanation documentation
between(x, left, right)
x A numeric vector of values
left, right: Boundary values
我理解一个向量是一维数组,所以我认为c(1:7)
是一个向量,对吧?我尝试使用文档中提供的示例作为模板来搜索7月至9月的航班,但以下只是返回错误:
# Example from documentation cont’d
x <- rnorm(1e2)
x[between(x, -1, 1)]
# Loading the library
library(nycflights13)
# Execute my hopeless attempt at between()
flights[between(month, 7, 9)]
# Output and error message
> flights[between(month, 7, 9)]
Error in between(month, 7, 9) : object 'month' not found
我觉得这真的很愚蠢,但是理解这一点的任何帮助都将非常感激。我也会因为没有提出一个明确定义的问题而道歉;可能很感激,除了'我不明白'之外,我真的不知道该怎么说。
答案 0 :(得分:25)
between
并不特别 - R中的任何其他函数都会导致同样的问题。您的困惑源于dplyr具有许多函数,这些函数允许您处理data.frame列名称,就像它们是正常变量一样;例如:
filter(flights, month > 9)
但是, between
不是这些功能之一。如上所述,它只是一个正常的功能。因此,如果您想使用它,您需要以传统方式提供参数;例如:
between(flights$month, 7, 9)
这将返回一个逻辑向量,您现在可以使用它来索引data.frame:
flights[between(flights$month, 7, 9), ]
或者,更像dplyr:
flights %>% filter(between(month, 7, 9))
请注意 here 我们现在使用非标准评估。但评估是由filter
执行的,而不是由between
执行的。使用标准评估调用between
filter
。
答案 1 :(得分:3)
我想你想要这样:
library(nycflights13)
library(dplyr)
flights %>% filter(between(month,7,9))
我在此期间看到这个解决方案也出现在评论中。
答案 2 :(得分:0)
过滤器(航班,在(月,7,9)之间)似乎工作得很好