Strano errore: gli argomenti formali omessi nella definizione del metodo non possono essere nella firma

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

  •  21-12-2019
  •  | 
  •  

Domanda

Sto cercando di definire metodi generici in un unico file e implementarli in un altro file r. Ma ottengo un errore che non capisco.

Domande:

    .
  1. Qual è la fonte dell'errore?
  2. Come posso aggiustare l'errore?
  3. Contenuto di BuyProbabilityGeneric.R:

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

    Contenuto di 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 Uscita console:

    > 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
    
    .

È stato utile?

Soluzione

Prova:

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

AVVISO Come ho modificato t in period nei formativi della definizione della funzione.Fondamentalmente, stavi cercando di definire una funzione in cui i formali sono conflitti con la firma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top