Diciamo che ho una classe S4 chiamata testClass
. I contenuti sono irrilevanti allo scopo di questa domanda, ma facciamo in modo che contenga un valore numerico.Come definire il metodo S4 per prendere l'opposto dell'oggetto?
#' An S4 class that stores a list.
#' @export
setClass("testClass",
representation(a="numeric"))
Mi piacerebbe definire un metodo che funzioni come il prendere l'opposto di un oggetto. Per esempio:
vec <- rnorm(10)
-vec
ho pensato che questo sarebbe un metodo dichiarando Arith
con il primo argomento mancante.
#' @export
setMethod("Arith", c(e1="missing", e2="testClass"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return([email protected])
)
}
)
Tuttavia, quando provo ad applicare il metodo ottengo il seguente errore:
tc <- new("testClass", a=2)
-tc
Error in -tc : invalid argument to unary operator
Nice demo. Solo per curiosità, da dove viene quel '.Generico '(cioè dove si trova il suo valore)? –
'? .Generic' produce dopo un po 'di scorrimento:'' .Generic 'è un vettore di lunghezza un carattere che nomina la funzione generica. – thothal
C'è qualche differenza se si prova 'setMethod (" - ", c (e1 =" testClass ", e2 =" missing "), function (e1, e2) -e1 @ a)'? – nicola