Problemas que passam argumentos com callNextMethod () em R

Minha pergunta

Por que écallNextMethod() não passando argumentos conforme o esperado para o próximo métod

Situação

Digo eu tenho duas classes hierárquicasfoo ebar (bar é subclasse defoo) para o qual eu tenho um métodofoobar que pode ser despachado para ambas as classes (ou seja, possui métodos para ambas as classes

Além disso, o método para a (sub) classebar chama o método parafoo após alguns cálculos comcallNextMethod().

Ambos os métodos têm o mesmo argumento adicional (com padrão) que deve ser passado ao método parafoo, onde somente isso é relevante.

setClass("foo", representation(x = "numeric"))
setClass("bar", contains = "foo")

setGeneric("foobar", function(object, ...) standardGeneric("foobar"))

setMethod("foobar", "foo", function(object, another.argument = FALSE, ...) {
    print(paste("in foo-method:", another.argument))
    if (another.argument) object@x^3
    else object@x^2
})

setMethod("foobar", "bar", function(object, another.argument = FALSE, ...) {
    print(paste("in bar-method:", another.argument))
     object@x <- sqrt(object@x)
    callNextMethod()
})

Descrição do Problema
Os argumentos não são passados conforme o esperado, mas os valores padrão são obtidos da definição do método. Especificamente, no primeiro método, o argumento é o especificado na chamada TRUE), no entanto, muda paraFALSE no próximo método.

o1 <- new("bar", x = 4)

foobar(o1, another.argument = TRUE)

[1] "in bar-method: TRUE"
[1] "in foo-method: FALSE"
[1] 4

Eu quero oanother.argument a ser passado para o próximo método para que sejaTRUE na chamada para ofoo método também.

A partir de?callNextMethod Eu entendo que ele deve funcionar conforme o esperado (ou seja, o argumento nomeado é passado como na chamada):

Para um argumento formal, digamos x, que aparece na chamada original, há um argumento correspondente na próxima chamada de método equivalente a x = x. Com efeito, isso significa que o próximo método vê os mesmos argumentos reais, mas os argumentos são avaliados apenas uma ve

inha segunda pergunta: Como posso passar outro argumento para o próximo método. (Eu realmente gostaria de manter os argumentos padrão nos dois métodos)

questionAnswers(1)

yourAnswerToTheQuestion