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.