Выбор методов для унаследованного класса S4
У меня вопрос, как применить обобщенную функцию plot()
используя мой новый метод для моего унаследованного класса S4.
Я расширяю существующий класс S4 (по имени stanfit) в rstan, скажем, lowerS4class
и определить новый метод для универсальной функции plot
скажем, для расширенного (унаследованного) класса S4 upperS4class
,
Но следующий нежелательный выбор (т. Е. Выбранный метод является методом для более низкого класса S4) происходит со следующим Note
в консоли R, когда я применяю обобщенную функцию plot()
для расширенного объекта класса S4 x
как plot(x)
,
Note: method with signature "lowerS4class#missing" chosen for function ‘plot’,
target signature "upperS4clss#missing".
"upperS4clss#ANY" would also be valid
Редактировать для комментария -----------------------------------------
наследование
setMethod("plot",
signature(x = "upperS4class"),
definition = function(x){
foo(x)
}
)
где foo
является функцией, определенной для upperS4class.
Отсроченный за upperS4class
upperS4class <- setClass(
#Name for upper class
"upperS4class",
# Inheritance
contains = "lowerS4class"
# New slots
representation(
.....
),
# Initial values for new slots
prototype(
.....
),
)
--- Редактировать для комментариев ------------------
Изменяя вышеизложенное следующим образом, все идет хорошо. Спасибо за @JDL.
setMethod("plot",
signature(x = "stanfitExtended",
y = "missing" # <--------------What's New !!
),
definition = function(x){
foo(x)
}
)