Escribí una función de operador binario para R (es decir, uno con un nombre como %X%
para que en lugar de tener que escribir %X%(a,b)
pueda usar la sintaxis más conveniente a %X% b
. Mi objetivo es tener un contenedor para <-
que haga cosas como registrar qué se hizo a los objetos en ese entorno y buscar un atributo 'protegido' que advierta al usuario antes de sobrescribir ese objeto.En R, ¿cómo obtener toda la línea de comando en el sys.call() de un operador binario?
Todo esto funciona, excepto que si intento hacer algo como a %X% b + c
dentro de la función todo lo que ve es a %X% b
_y eso es todo lo que hace; a se le asigna el valor de byc se ignora por completo. a %X% (b + c)
funciona igual que %X%(a, b + c)
, pero el objetivo de escribir esto como ab operador inary es evitar paréntesis.
Si sobrescribo <-
, su sys.call()
lo ve todo a la izquierda y a la derecha. ¿Por qué el mío solo ve solo los nombres adyacentes de la línea de comando?
Aquí es código que se replica este problema:
`%X%` <- function(...){
print(deparse(sys.call()));
}
a %X% 3 + 1:10;
El resultado deseado es "a%% X 3 + 1:10" El resultado observado es "a% X% 3"
Gracias.
Impar; cuando ejecuto el código (R 2.15.1) obtengo 'Error en un% X% 3 + 1:10: argumento no numérico para el operador binario' –
@DavidRobinson, el error proviene del operador' + 'al intentar sume la salida de 'a% X% 3' de tipo carácter con' 1: 10' de tipo numérico. – flodel