如何定义取对象反面的S4方法?
How to define S4 method for taking the opposite of the object?
假设我有一个名为 testClass
的 S4 class。内容与本题目的无关,但让我们让它包含一个数值。
#' 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
Error in -tc : invalid argument to unary operator
哈!在摆弄了一些之后,我发现需要缺少的是 e2
参数。以下作品:
#' @export
setMethod("Arith", c(e1="testClass", e2="missing"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return(-e1@a)
)
}
)
假设我有一个名为 testClass
的 S4 class。内容与本题目的无关,但让我们让它包含一个数值。
#' 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
Error in -tc : invalid argument to unary operator
哈!在摆弄了一些之后,我发现需要缺少的是 e2
参数。以下作品:
#' @export
setMethod("Arith", c(e1="testClass", e2="missing"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return(-e1@a)
)
}
)