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.

Tags:

R

Dplyr