Ошибка «неиспользуемые аргументы» при использовании метода - PullRequest
3 голосов
/ 20 февраля 2020

Это действительно загадка для меня. Я определил свой метод следующим образом (для класса "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)

Почему метод не не принимаете эти аргументы и говорите, что они «не используются»?

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Вот способ решения проблемы. Очевидно, вы создаете функцию установки, поэтому я немного изменю generi c.

`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"
0 голосов
/ 20 февраля 2020

@ GGrothendieck опередил меня, но вот пример, чтобы доказать это;

addStatistics <- function(...) UseMethod("addStatistics")

addStatistics.graf <- function (x, stat_name, value)
{
  if(!missing(stat_name)){
    if (stat_name == "env_coef_delta_mnll") {
        x$env_coef_delta_mnll <- value
    }}
    x
}

m <- list(env_coef_delta_mnll = 3)
class(m) <- "graf"

addStatistics(m, stat_name = "env_coef_delta_mnll", 4)
#> $env_coef_delta_mnll
#> [1] 4
#> 
#> attr(,"class")
#> [1] "graf"

Создано в 2020-02-20 пакетом представить (v0 .3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...