Extraño error:formal de los argumentos omitidos en la definición de método no puede estar en la firma

StackOverflow https://stackoverflow.com//questions/22025572

  •  21-12-2019
  •  | 
  •  

Pregunta

Estoy tratando de definir los métodos genéricos en una R de archivos y ponerlos en práctica en otros R archivo.Pero me da un error que no entiendo.

Preguntas:

  1. ¿Cuál es el origen del error?
  2. ¿Cómo puedo solucionar el error?

Contenido de BuyProbabilityGeneric.R:

setGeneric("FirstTimeBuyProbability",
        valueClass = "numeric",
        function(object, period, price) {
    standardGeneric("FirstTimeBuyProbability")
})

setGeneric("ReturningBuyProbability",
        valueClass = "numeric",
        function(object, period1, price1, period2, price2) {
    standardGeneric("ReturningBuyProbability")
})

Contenido de BuyProbabilityBasic.R:

setClass("BuyProbabilityBasic", representation(
        full.price.probability = "numeric",
        elasticity = "numeric"))

setMethod("FirstTimeBuyProbability",
        signature(object = "BuyProbabilityBasic", 
                period = "numeric", price = "numeric"), 
        function(object, t, price) {
    full.price.probability * price^elasticity
})

setMethod("ReturningBuyProbability",
        signature(object = "BuyProbabilityBasic", 
                period1 = "numeric", price1 = "numeric",
                period2 = "numeric", price2 = "numeric"), 
        function(object, period1, price1, period2, price2) {
    max(0, FirstTimeBuyProbability(object, period2, price2) -
        FirstTimeBuyProbability(object, period1, price1))
})

R salida de la consola:

> source('BuyProbabilityGeneric.R')
> source('BuyProbabilityBasic.R')
Error in conformMethod(signature, mnames, fnames, f, fdef, definition) : 
  in method for ‘FirstTimeBuyProbability’ with signature 
‘object="BuyProbabilityBasic",period="numeric",price="numeric"’: 
formal arguments (period = "numeric") omitted in the method definition
cannot be in the signature
¿Fue útil?

Solución

probar:

setMethod("FirstTimeBuyProbability",
          signature(object = "BuyProbabilityBasic", 
                    period = "numeric", price = "numeric"), 
          function(object, period, price) {
            full.price.probability * price^elasticity
          })

Observe cómo he cambiado t a period en su definición de la función trajes de etiqueta.Básicamente, que estaban tratando de definir una función en la que los trajes de etiqueta en conflicto con la firma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top