خطأ غريب:لا يمكن أن تكون الحجج الرسمية المحذوفة في تعريف الطريقة في التوقيع
سؤال
أحاول تحديد الأساليب العامة في ملف ص واحد وتنفيذها في ملف ص آخر.لكني أحصل على خطأ لا أفهمه.
أسئلة:
- ما هو مصدر الخطأ?
- كيف يمكنني إصلاح الخطأ?
محتويات 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
في شكليات تعريف الوظيفة الخاصة بك.في الأساس ، كنت تحاول تحديد وظيفة حيث تتعارض الصيغ مع التوقيع.
لا تنتمي إلى StackOverflow