我在自己的包中使用mgcv包,到目前为止一切都很好。但是,我尝试将Tweedie系列对象("Tweedie()“、"tw()")引入到我的包中,但是在尝试使用后者时,我遇到了一个错误。
该函数就这样简单(在这里简化):
#' @importFrom mgcv tw
#'
.FamilyLink <- function(link) {
familyObject <- tw(link = link)
return(familyObject)
}我把这个放在命名空间文件中
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()来使我的包/功能工作?谢谢
发布于 2020-04-07 11:12:03
不确定这是否是最优雅的解决方案,但是在这里的帮助下,R package - Transferring environment from imported package的解决方案是从mgcv再导出ldTweedie函数。
https://stackoverflow.com/questions/60991755
复制相似问题