gpt4 book ai didi

r - 如何定义S4方法来取对象的反面?

转载 作者:行者123 更新时间:2023-12-04 09:43:00 26 4
gpt4 key购买 nike

假设我有一个名为 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

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)
)
}
)

关于r - 如何定义S4方法来取对象的反面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com