Выбор методов для унаследованного класса S4 - PullRequest
0 голосов
/ 28 декабря 2018

У меня вопрос, как применить обобщенную функцию 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)
             }

       )
...