R-从命名空间调用函数时找不到的函数



我有一个带有一堆功能的R软件包(全部都导出)。该功能之一在运行时内部呼叫另一个函数。但是,当我通过名称空间运行此功能而不加载整个软件包时,它会引发错误:'无法找到功能。'

例如: foobar是两个功能。foo内部调用bar。但是,当我通过名称空间调用foo时,mypackage::foo()会引发错误could not find function "bar"。如果我首先加载库并通过名称空间运行,则可以正常运行。

#doesnot work
mypackage::foo()
could not find function "bar"
#works
library(mypackage)
mypackage::foo()

我已经导出了两个功能,并且两者都存在于命名空间文件中。

使用 ::::: fuc [nctions nctions是只将功能代码拉到工作区中。因此,在mypackage中,没有任何辅助或支持功能都被拉入"解释器空间",即解释器可以看到的对象。因此,您选择2" Works",并且您的选项1失败。在我看来是显而易见的原因。

当我黑客入侵我知道的函数时,我知道 loaded a名称空间时,我通常会用:

完成黑客入侵过程
 environment(hacked_fun) <- environment(orig_fun)

但是,当您使用"多彩功能"从磁盘上拉代码时,这不是一个选择。这也是经验丰富的R ProgramMmer在包装方面开发的主要原因。制作软件包的编码学科还支持定义软件包依赖项。

最新更新