Załóżmy, że mam klasę S4 o nazwie testClass
. Treść nie ma znaczenia dla celu tego pytania, ale sprawmy, by zawierała wartość liczbową.Jak zdefiniować metodę S4 do przyjmowania przeciwieństwa obiektu?
#' An S4 class that stores a list.
#' @export
setClass("testClass",
representation(a="numeric"))
Chciałbym zdefiniować metodę, która działa tak, jakby była przeciwieństwem obiektu. Na przykład:
vec <- rnorm(10)
-vec
myślałem, że to będzie deklarowania Arith
metodę z pierwszym argumentem brakuje.
#' @export
setMethod("Arith", c(e1="missing", e2="testClass"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return([email protected])
)
}
)
Jednak, gdy staram się stosować metodę pojawia się następujący błąd:
tc <- new("testClass", a=2)
-tc
Error in -tc : invalid argument to unary operator
Ładna prezentacja. Z czystej ciekawości, skąd pochodzi gen. Gen. (Gdzie jest jego wartość)? –
'' .Generic' produkuje po pewnym przewijaniu: ''.Generic jest długometrażowym wektorem nazwującym funkcję ogólną." – thothal
Czy jest jakaś różnica, jeśli spróbujesz 'setMethod (" - ", c (e1 =" testClass ", e2 =" brakujący "), funkcja (e1, e2) -e1 @ a)'? – nicola