R &引用;“未使用的参数”;使用方法时出错

R &引用;“未使用的参数”;使用方法时出错,r,R,这对我来说真是个谜。我已经这样定义了我的方法(对于类“graf”): 为什么该方法不接受提供的参数并说它们“未使用”?@GGrothendieck击败了我,但这里有一个reprex来证明它 addStatistics[1]“graf” 由(v0.3.0)于2020年2月20日创建,以下是解决问题的方法。显然,您正在创建一个setter函数,因此我将稍微更改泛型 `addStatistics<-` <- function(x, ...) UseMethod("addStatistic

这对我来说真是个谜。我已经这样定义了我的方法(对于类“graf”):


为什么该方法不接受提供的参数并说它们“未使用”?

@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"