[R] Operator proposal: %between%
Duncan Murdoch
murdoch.duncan at gmail.com
Thu Sep 4 17:01:48 CEST 2014
On 04/09/2014 10:41 AM, Torbjørn Lindahl wrote:
> Not sure if this is the proper list to propose changes like this, if it
> passes constructive criticism, it would like to have a %between% operator
> in the R language.
But it appears that you do:
>
> I currently have this in my local R startup script:
>
> `%between%` <- function(x,...) {
> y <- range( unlist(c(...)) )
> return( x >= y[1] & x =< y[2] )
> }
>
> It allows me to do things like: 5 %between c(1,10)
>
> and also as act as an "in_range" operator:
> foo %between% a.long.list.with.many.values
So what you are asking is that someone should make this available to
others, as well. That seems like a reasonable thing to do, but why
shouldn't that someone be you?
>
> This may seem unnecessary, since 5 >= foo[1] && foo<= foo[2] is also quite
> short to type, but there is a mental cost to this, eg if you are deeply
> focused on a complicated program flow, the %between% construct is a lot
> easier to type out, and relate to, than the logically more complex
> construct with && and <=/>=, at least in my experience.
>
One problem with your definition is that it's not clear it does the
right thing when x is a vector. I might have a vector of lower bounds,
and a vector of upper bounds, and want to check each element of x
against the corresponding bound, i.e. compute
lower <= x & x <= upper
Your %between% operator could be rewritten so that x %between%
cbind(lower, upper) would give this result, but it doesn't do so now.
(I'm not saying you *should* rewrite it like that, but it's something
you should consider.)
Duncan Murdoch
More information about the R-help
mailing list