How does dplyr’s between work?
between
is nothing special — any other function in R would have led to the same problem. Your confusion stems from the fact that dplyr has a lot of functions that allow you to work on data.frame column names as if they were normal variables; for instance:
filter(flights, month > 9)
However, between
is not one of these functions. As mentioned, it’s simply a normal function. So if you want to use it, you need to provide arguments in the conventional way; for instance:
between(flights$month, 7, 9)
This will return a logical vector, and you can now use it to index your data.frame:
flights[between(flights$month, 7, 9), ]
Or, more dplyr-like:
flights %>% filter(between(month, 7, 9))
Note that here we now use non-standard evaluation. But the evaluation is performed by filter
, not by between
. between
is called (by filter
) using standard evaluation.
I guess you want it like this:
library(nycflights13)
library(dplyr)
flights %>% filter(between(month,7,9))
I see in the meantime this solution also appeared in the comments.