You can easily run into precedence problems with the %fun% syntax. E.g., if 1 %<% 5 %<% 10 returns TRUE then 1 %<% 5 %<% 10*2 will return 2 because %<% has higher precedence than *. > as.list(quote(1 %<% 5 %<% 10*2)) [[1]] `*`
[[2]] 1 %<% 5 %<% 10 [[3]] [1] 2 Standard functional syntax makes this unambiguous and allows you to use named arguments to make their meanings unambiguous. isBetween(5, lower=1, upper=10) or isBetween(5, range=c(1,10)) Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Sep 4, 2014 at 12:54 PM, Greg Snow <538...@gmail.com> 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. > > On Thu, Sep 4, 2014 at 8:41 AM, Torbjørn Lindahl > <torbjorn.lind...@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@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. > 538...@gmail.com > > ______________________________________________ > 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. ______________________________________________ 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.