从另一个包中调用时,无法从 mgcv 访问 "ldTweedie" 函数
No access to "ldTweedie" function from mgcv when called from within another package
我在自己的包中使用 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
一切正常。所以我想知道我是不是在这里做错了什么,或者我怎样才能让我的 package/function 仅通过安装而不必使用 load_all() 来工作?谢谢
不确定这是否是最优雅的解决方案,但在此处 的帮助下,解决方案是从 mgcv 重新导出 ldTweedie 函数。
我在自己的包中使用 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
一切正常。所以我想知道我是不是在这里做错了什么,或者我怎样才能让我的 package/function 仅通过安装而不必使用 load_all() 来工作?谢谢
不确定这是否是最优雅的解决方案,但在此处