Canned Man - 1 year ago 85
R Question

# How does dplyr’s between work?

I’ve read the documentation and I’ve tried googling it; it should be a simple thing, but it would seem it’s not to me; so I boldly go forth and ask if someone here could explain me how dplyr’s

`between()`
works.

``````# Explanation documentation
between(x, left, right)

x            A numeric vector of values
left, right: Boundary values
``````

I understand a vector is a one-dimensional array, so I suppose
`c(1:7)`
is a vector, right? I tried using the example provided in the documentation as a template to search for flights july–september, but the following just returns an error:

``````# Example from documentation cont’d
x <- rnorm(1e2)
x[between(x, -1, 1)]

library(nycflights13)

# Execute my hopeless attempt at between()
flights[between(month, 7, 9)]

# Output and error message
> flights[between(month, 7, 9)]
``````

I feel really daft asking this, but any help in understanding this will be greatly appreciated. I would also apologise for not asking a well-defined question; as is probably appreciated, I really don’t know how to phrase it other than ‘I don’t get it’.

`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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download