Я разрабатываю пакет, который имеет функцию forecast.myclass
. Я хочу, чтобы эта функция прекрасно работала с пакетом forecast
. То есть когда forecast
пакет загружен, код forecast(object)
должен позвонить forecast.myclass
из моего пакета.Как расширить метод S3 из другого пакета без загрузки пакета
Поскольку мне нужно только родовое определение forecast
из пакета forecast
, и я не использую любые другие функции из пакета forecast
я не хотел, чтобы включить его в Depends. Поэтому я определить общий в моем пакете следующим образом:
##'
##' @export
forecast <- function(object,...) UseMethod("forecast")
##' @rdname forecast.midas_r
##' @method forecast midas_r
##' @export
forecast.midas_r <- function(object,newdata=NULL,method=c("static","dynamic"),insample=get_estimation_sample(object),...) {
Теперь все работает, как ожидается, когда пакет forecast
не загружен. Но когда я загружаю пакет forecast
, то forecast.midas_r
не вызывается, когда forecast(object)
, где object
имеет класс midas_r
. Как мне решить эту проблему?
Если вы не задокументируете 'прогноз.midas_r' (которого вы не являетесь), вам нужен только' @ S3method (forcast, midas_r) '- который не будет создавать Rd-файл, но добавит правильную строку в NAMESPACE (который является первым местом для поиска, если у вас возникли проблемы) – hadley
@hadley Я документирую прогноз.midas_r таким образом, чтобы прогноз и прогноз.midas_r отображались на одной и той же странице справки. Код находится здесь: https://github.com/mpiktas/midasr/blob/master/R/midas_r_methods.R, начинается с строки 279 – mpiktas