Как импортировать функцию R из другого пакета, чтобы она была доступна пользователю?

я пишу пакет R, и я хочу импортировать общую функцию forecast из пакета прогноз. Мой пакет предоставляет метод forecast.myobj. У меня есть forecast на Imports: в пакете DESCRIPTION file и мое определение функции выглядит следующим образом:

##' @export
forecast.myobj <- function(x) {

}

я использую инструменты разработчика пакет (версия 1.5) для создания пакета. Созданный NAMESPACE имеет следующие

S3method(forecast, myobj)
importFrom(forecast, forecast)

однако, когда я загружаю свой пакет в чистый сеанс R, функция forecast не имеется. Интересно, хотя я могу видеть страницы справки forecast и forecast.myobj и я могу получить доступ к этим функциям через forecast::forecast и mypackage:::forecast.myobj. Можно ли как-то сделать forecast доступно пользователю без зависимости от пакета forecast? Я проверил документацию и пересмотрели кучу подобных вопросов здесь, но я не нашел однозначного отрицательного или положительного ответа.

2 ответов


импортированная функция должна быть экспортирована в файл пространства имен, чтобы она была доступна пользователям:

S3method(forecat, myobj)
importFrom(forecast, forecast)
export(forecast)

пример см. В разделе файл пространства имен импортирующая %>% из пакета magrittr и экспортирует его так, чтобы он был доступен пользователю.


давая свой ответ, чтобы добавить информацию о том, как достичь NAMESPACE описано в ответе @G. Grothendieck с помощью инструменты разработчика пакета. Следующие строки (по образцу код dplyr) делать трюк

##' @importFrom forecast forecast
##' @name forecast
##' @rdname forecast.myobj
##' @export
NULL