假设我有一个名为testClass
的S4类。内容与此问题的目的无关,但让它包含一个数值。
#' An S4 class that stores a list.
#' @export
setClass("testClass",
representation(a="numeric"))
我想定义一个方法,就像对象一样。例如:
vec <- rnorm(10)
-vec
我认为这会声明一个Arith
方法,第一个参数缺失。
#' @export
setMethod("Arith", c(e1="missing", e2="testClass"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return(-e2@a)
)
}
)
但是,当我尝试应用该方法时,我收到以下错误:
tc <- new("testClass", a=2)
-tc
-tc中的错误:一元运算符的无效参数
答案 0 :(得分:6)
哈!在摆弄了一些之后,我发现需要缺少e2
参数。以下作品:
#' @export
setMethod("Arith", c(e1="testClass", e2="missing"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return(-e1@a)
)
}
)