5

我在自己的包中使用 mgcv 包,到目前为止一切正常。但是,我尝试将 Tweedie 系列对象(“Tweedie()”、“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() 来让我的包/功能工作?谢谢

4

1 回答 1

1

不确定这是否是最优雅的解决方案,但在R 包 - 从导入的包中传输环境的帮助下,解决方案是从 mgcv 重新导出 ldTweedie 函数。

dplyr再出口%>%

于 2020-04-07T11:12:03.783 回答