У меня вопрос, как применить обобщенную функцию plot()
, используя мой новый метод для моего унаследованного класса S4.
Я расширяю существующий класс S4 (имя которого stanfit ) в rstan , скажем lowerS4class
, и определить новый метод для универсальной функции plot
для расширенного (унаследованного) класса S4, скажем upperS4class
.
Но следующий нежелательный выбор (т. е. выбранный метод является методом для нижнего класса S4), когда в консоли R происходит следующее Note
, когда я применяю обобщенную функцию 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.
Def. для 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)
}
)