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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to