R &引用;“未使用的参数”;使用方法时出错
这对我来说真是个谜。我已经这样定义了我的方法(对于类“graf”):R &引用;“未使用的参数”;使用方法时出错,r,R,这对我来说真是个谜。我已经这样定义了我的方法(对于类“graf”): 为什么该方法不接受提供的参数并说它们“未使用”?@GGrothendieck击败了我,但这里有一个reprex来证明它 addStatistics[1]“graf” 由(v0.3.0)于2020年2月20日创建,以下是解决问题的方法。显然,您正在创建一个setter函数,因此我将稍微更改泛型 `addStatistics<-` <- function(x, ...) UseMethod("addStatistic
为什么该方法不接受提供的参数并说它们“未使用”?@GGrothendieck击败了我,但这里有一个reprex来证明它
addStatistics[1]“graf”
由(v0.3.0)于2020年2月20日创建,以下是解决问题的方法。显然,您正在创建一个setter函数,因此我将稍微更改泛型
`addStatistics<-` <- function(x, ...) UseMethod("addStatistics<-")
`addStatistics<-.graf` <- function (x, stat_name = NULL, value = NULL)
{
if (stat_name == "env_coef_delta_mnll") {
x$env_coef_delta_mnll <- value
}
x
}
as.graf <- function(x){
class(x) <- "graf"
x
}
x <- as.graf(list())
addStatistics(x, "env_coef_delta_mnll") <- 1234
x
#$env_coef_delta_mnll
#[1] 1234
#
#attr(,"class")
#[1] "graf"
`addstatistics签名必须匹配。将…
添加到通用签名的末尾。@G.Grothendieck哪个签名?函数调用与定义完全匹配。它不。。泛型只有x,方法有额外的参数。好的,谢谢,这肯定更好!但是,为什么我在问题中的代码不起作用?@TMS因为G.Grothendiek在他的评论中说,泛型的签名必须有dots参数,以便根据方法预测更多参数。除非您事先知道可以为该泛型编写的所有可能方法。
addStatistics(m, "env_coef_delta_mnll", 0)
#Error in addStatistics(m, "env_coef_delta_mnll", 0) :
# unused arguments ("env_coef_delta_mnll", 0)
`addStatistics<-` <- function(x, ...) UseMethod("addStatistics<-")
`addStatistics<-.graf` <- function (x, stat_name = NULL, value = NULL)
{
if (stat_name == "env_coef_delta_mnll") {
x$env_coef_delta_mnll <- value
}
x
}
as.graf <- function(x){
class(x) <- "graf"
x
}
x <- as.graf(list())
addStatistics(x, "env_coef_delta_mnll") <- 1234
x
#$env_coef_delta_mnll
#[1] 1234
#
#attr(,"class")
#[1] "graf"