R 如何定义与对象相反的S4方法?

R 如何定义与对象相反的S4方法?,r,s4,R,S4,假设我有一个名为testClass的S4类。内容与这个问题的目的无关,但让我们让它包含一个数值 #' An S4 class that stores a list. #' @export setClass("testClass", representation(a="numeric")) 我想定义一个方法,其工作原理类似于取对象的反面。例如: vec <- rnorm(10) -vec 但是,当我尝试应用该方法时,会出现以下错误: tc <-

假设我有一个名为
testClass
的S4类。内容与这个问题的目的无关,但让我们让它包含一个数值

#' An S4 class that stores a list.
#' @export
setClass("testClass", 
                 representation(a="numeric"))
我想定义一个方法,其工作原理类似于取对象的反面。例如:

vec <- rnorm(10)
-vec
但是,当我尝试应用该方法时,会出现以下错误:

tc <- new("testClass", a=2)
-tc

tcHah!在进一步修改它之后,我发现需要缺少的是
e2
参数。以下工作:

#' @export
setMethod("Arith", c(e1="testClass", e2="missing"),
                    function(e1, e2)
                    {
                        op = .Generic[[1]]
                        switch(op,
                            `-` = return(-e1@a)
                        )
                    }
)

很好的演示。出于好奇,
.Generic
从何而来(即,它的值从何处找到)?`Generic`在滚动后产生:
'。Generic'是命名泛型函数的一个长度为一个字符的向量。
如果尝试
setMethod(“-”,c(e1=“testClass”,e2=“missing”),函数(e1,e2)有什么区别吗 -e1@a)
#' @export
setMethod("Arith", c(e1="testClass", e2="missing"),
                    function(e1, e2)
                    {
                        op = .Generic[[1]]
                        switch(op,
                            `-` = return(-e1@a)
                        )
                    }
)