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

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
}

我正在调用这样的方法,并收到一个错误:
addStatistics(m, "env_coef_delta_mnll", 0)
#Error in addStatistics(m, "env_coef_delta_mnll", 0) :
#  unused arguments ("env_coef_delta_mnll", 0)

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

最佳答案

这是解决问题的方法。显然你正在创建一个 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"

关于r - 使用方法时的 "unused arguments"错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60327087/

10-12 17:09