On 05/09/2014, 6:47 AM, Torbjørn Lindahl wrote: > I don't mind maintaining this, however I'm not creating a new util package > just for one function, there are already several nice util libraries out > there, adding one more adds to fragmentation more than this single function > provides usefulness. > > If anyone wants to adopt this low-maintenance-cost love child, that would > be the best option. If this is something, worthy of R-Core I'd be happy to > submit it, but from the sound of it that door seems closed. I think %>% > etc. also should go there, they look great and would make everyday life > simpler, almost enjoyable. > > Also some of the point of this function is keeping it as an operator, that > provides better readability and mental flow. >
Another issue with operators is that they have quite high operator precedence, as mentioned in the TeachingDemos help page for %<%. So for example, 2 < 4 2 %<% 4 1 + 1 < 2 + 2 all return TRUE (in %<% with some attributes), but 1 + 1 %<% 2 + 2 returns 4, with attributes. (It is evaluated as 1 + (1 %<% 2) + 2, whereas the regular < has lower precedence, so it is evaluated as (1 + 1) < (2 + 2). See the ?Syntax help page for the precedence rules. Some languages allow user-defined operators to be assigned a particular precedence, but in R the precedence is fixed. This means that user-defined operators are less readable than you might think. Duncan Murdoch > Looks like all variations of between shown could easily be merged into one > cover-it-all operator > > T. > > > On Fri, Sep 5, 2014 at 10:36 AM, Gabor Grothendieck <ggrothendi...@gmail.com >> wrote: > >> On Thu, Sep 4, 2014 at 10: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. >>> >> >> There is a between function in the data.table package. >> >>> library(data.table) >>> between >> function (x, lower, upper, incbounds = TRUE) >> { >> if (incbounds) >> x >= lower & x <= upper >> else x > lower & x < upper >> } >> >> and also in the tis package which works differently: >> >>> library(tis) >>> between >> function (y, x1, x2) >> { >> y <- unclass(y) >> x1 <- unclass(x1) >> x2 <- unclass(x2) >> small <- pmin(x1, x2) >> large <- pmax(x1, x2) >> (y >= small) & (y <= large) >> } >> >> In addition, SQL has a between operator >> >>> library(sqldf) >>> sqldf("select * from BOD where Time between 3 and 5") >> Time demand >> 1 3 19.0 >> 2 4 16.0 >> 3 5 15.6 >> > > > ______________________________________________ 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.