Нет доступа к функции "ldTweed ie" из mgcv при вызове из другого пакета - PullRequest
4 голосов
/ 02 апреля 2020

Я использую пакет mgcv в своем собственном пакете, и до сих пор все работало хорошо. Однако я попытался представить объекты семейства Tweed ie ("Tweed ie ()", "tw ()") в мой пакет, но при попытке использовать последний получаю ошибку.

Функция так проста (здесь упрощенно):

#' @importFrom mgcv tw
#'
.FamilyLink <- function(link) {
       familyObject <- tw(link = link)
       return(familyObject)
}

, и у меня есть это в файле NAMESPACE

importFrom(mgcv,tw)

Так что после установки пакета я вызываю свою функцию (не экспортируется, обычно используется в другой функции из моего пакета)

fam <- MyPackage:::.FamilyLink("log")
fam$aic(1, 1, NULL, 1, 1)
Error in ldTweedie(y, mu, p = p, phi = scale) : 
  could not find function "ldTweedie"

Затем я попытался добавить:

importFrom(mgcv,ldTweedie)
importFrom(mgcv,tw)

Установил пакет и получил ту же проблему. Однако, если я загружаю свой пакет, используя devtools:

devtools::load_all("MyPackage")
fam <- .FamilyLink("log")
fam$aic(1, 1, NULL, 1, 1)
[1] 4.05723

все работает нормально. Поэтому мне было интересно, что я делаю здесь что-то не так или как мне заставить мой пакет / функцию работать, просто установив и не используя load_all ()? Спасибо

1 Ответ

0 голосов
/ 07 апреля 2020

Не уверен, что это наиболее элегантное решение, но с помощью отсюда R package - Перенос среды из импортированного пакета решение состоит в том, чтобы повторно экспортировать функцию ldTweed ie из mgcv.

dplyr реэкспорт %>%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...