خطأ غريب:لا يمكن أن تكون الحجج الرسمية المحذوفة في تعريف الطريقة في التوقيع

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

  •  21-12-2019
  •  | 
  •  

سؤال

أحاول تحديد الأساليب العامة في ملف ص واحد وتنفيذها في ملف ص آخر.لكني أحصل على خطأ لا أفهمه.

أسئلة:

  1. ما هو مصدر الخطأ?
  2. كيف يمكنني إصلاح الخطأ?

محتويات 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))
})

إخراج وحدة التحكم ص:

> 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
          })

لاحظ كيف تغيرت t إلى period في شكليات تعريف الوظيفة الخاصة بك.في الأساس ، كنت تحاول تحديد وظيفة حيث تتعارض الصيغ مع التوقيع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top