r - sufijo - qué es un infijo y ejemplos
¿Cómo puedo crear un infijo% entre% operador? (3)
Esta función existe en el paquete data.table
(con la ligera diferencia de que los límites están incluidos), implementada como:
between <- function(x,lower,upper,incbounds=TRUE)
{
if(incbounds) x>=lower & x<=upper
else x>lower & x<upper
}
"%between%" <- function(x,y) between(x,y[1],y[2],incbounds=TRUE)
Se puede utilizar como between(x,lower,upper)
o x %between% c(lower, upper)
Me gustaría tener un operador de infijo %between%
en R
- para verificar si x
está entre el límite inferior l
y el límite superior u
.
He creado la siguiente función simple, pero no es una operación de infijo.
# between function - check to see if x is between l and u
is.between <- function(x, l, u) { x > l & x < u }
Mi objetivo es reemplazar esto con: x %between% c(l, u)
¿Es posible definir nuevas operaciones de infijo? Si es así, ¿cómo se hace esto?
gracias por adelantado
Para evitar la ambigüedad, se podrían definir dos funciones:
"%><%" <- function(x, rng) x > rng[1] & x < rng[2]
"%>=<%" <- function(x, rng) x >= rng[1] & x <= rng[2]
x=1:5
x %><% c(2,4)
[1] FALSE FALSE TRUE FALSE FALSE
x %>=<% c(2,4)
[1] FALSE TRUE TRUE TRUE FALSE
O incluso agregar estos otros dos:
"%> =<%"<-function(x,rng) x > rng[1] & x <= rng[2]
"%>= <%"<-function(x,rng) x >= rng[1] & x < rng[2]
Puede definir operadores de infijo como funciones:
`%between%`<-function(x,rng) x>rng[1] & x<rng[2]
%between% c(0,3)
# [1] TRUE
%between% c(2,3)
# [1] FALSE
Como lo señaló @flodel, este operador está vectorizado:
1:5 %between% c(1.5,3.5)
# [1] FALSE TRUE TRUE FALSE FALSE