이상한 오류 : 메소드 정의에서 생략 된 공식적인 인수는 서명에있을 수 없습니다.

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

  •  21-12-2019
  •  | 
  •  

문제

하나의 r 파일에서 일반 메소드를 정의하고 다른 r 파일에 구현하려고합니다. 그러나 나는 이해하지 못하는 오류가 발생합니다.

질문 :

  1. 오류의 원인은 무엇입니까?
  2. 오류를 어떻게 수정합니까?
  3. BuyProbabilityGeneric.R의 내용 :

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

    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 콘솔 출력 :

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

도움이 되었습니까?

해결책

시도 :

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

Function Pricture 형식에서 t에서 period를 변경하는 방법을 확인하십시오.기본적으로 형식이 서명과 충돌하는 함수를 정의하려고했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top