[R] Operator proposal: %between%

Torbjørn Lindahl torbjorn.lindahl at gmail.com
Fri Sep 5 09:59:58 CEST 2014


Please add it if you think it fits, and expand it as discussed, I am not
creating a package for one single utility function.

T.


On Fri, Sep 5, 2014 at 1:28 AM, David Winsemius <dwinsemius at comcast.net>
wrote:

>
> On Sep 4, 2014, at 12:54 PM, Greg Snow wrote:
>
> > The TeachingDemos package has %<% and %<=% operators for a between
> > style comparison.  So for your example you could write:
> >
> > 1 %<% 5 %<% 10
> >
> > or
> >
> > 1 %<=% 5 %<=% 10
> >
> > And these operators already work with vectors:
> >
> > lb %<=% x %<% ub
> >
> > and can even be further chained:
> >
> > 0 %<% x %<% y %<% z %<% 1  # only points where x < y and y < z and all
> > between 0 and 1.
> >
> > It is a little bit different syntax from yours, but would that do what
> you want?
> >
> > If not, we could add a %between% function (expand it a bit following
> > Duncan's suggestion) to the TeachingDemos package if you don't want to
> > create your own package.
>
> If you are accepting feature requests I would like to see a `%btwn%`
> function that would accept as its second argument either a two element
> numeric or alpha vector or a two column matrix of with the same number of
> rows as the first argument. Something along these lines:
>
>
> > `%btwn%` <- function(x,y) if(!is.null(dim(y))&&dim(y)[1] == length(x)
> ){x >= y[,1] & x < y[,2]}else{x >= y[1] & x <y[2]}
> > 4 %btwn% c(2,6)
> [1] TRUE
>
> --
> David
> >
> > On Thu, Sep 4, 2014 at 8:41 AM, Torbjørn Lindahl
> > <torbjorn.lindahl at gmail.com> 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.
> >>
> >> 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
> >>
> >> 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.
> >>
> >> --
> >> mvh
> >> Torbjørn Lindahl
> >>
> >>        [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help at 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.
> >
> >
> >
> > --
> > Gregory (Greg) L. Snow Ph.D.
> > 538280 at gmail.com
> >
> > ______________________________________________
> > R-help at 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.
>
> David Winsemius
> Alameda, CA, USA
>
>


-- 
mvh
Torbjørn Lindahl

	[[alternative HTML version deleted]]



More information about the R-help mailing list