Как импортировать функцию 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