R 无法访问“文件”;ldTweedie“;当从另一个包中调用时,从mgcv调用函数

R 无法访问“文件”;ldTweedie“;当从另一个包中调用时,从mgcv调用函数,r,namespaces,mgcv,tweedie,R,Namespaces,Mgcv,Tweedie,我在自己的软件包中使用mgcv软件包,到目前为止,一切都很顺利。但是,我尝试将Tweedie族对象(“Tweedie()”,“tw()”)引入到我的包中,但在尝试使用后者时出现了一个错误 该函数如下所示(此处简化): 因此,在安装包之后,我调用我的函数(非导出,通常在包中的其他函数中使用) 安装了软件包后,出现了相同的问题。但是,如果我使用devtools加载包: devtools::load_all("MyPackage") fam <- .FamilyLink("log") fam$a

我在自己的软件包中使用mgcv软件包,到目前为止,一切都很顺利。但是,我尝试将Tweedie族对象(“Tweedie()”,“tw()”)引入到我的包中,但在尝试使用后者时出现了一个错误

该函数如下所示(此处简化):

因此,在安装包之后,我调用我的函数(非导出,通常在包中的其他函数中使用)

安装了软件包后,出现了相同的问题。但是,如果我使用devtools加载包:

devtools::load_all("MyPackage")
fam <- .FamilyLink("log")
fam$aic(1, 1, NULL, 1, 1)
[1] 4.05723
devtools::加载所有(“MyPackage”)

fam不确定这是否是最优雅的解决方案,但在这里的帮助下,解决方案是从mgcv重新导出ldTweedie函数


我对[R]软件包没有经验,所以这可能是一个没有经验的问题;但是我很好奇,你为什么不直接打电话给.FamilyLink(link=“log”)而不是.FamilyLink(“tw”,“log”)?谢谢你的评论。这是我简化实际代码时的打字错误。可能与环境有关。。。例如,函数mgcv::ldTweedie在myPackage::.FamilyLink函数环境中不可见。。。如果您使.FamilyLink在包外可见,该怎么办?Sry只是猜测原因:)我尝试导出函数,但没有成功。我仍然认为问题与环境有关。你和他们打过交道吗?函数tw()位于mgcv包的文件“efam.r”中。它有一个命令:env
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::load_all("MyPackage")
fam <- .FamilyLink("log")
fam$aic(1, 1, NULL, 1, 1)
[1] 4.05723