R:从命名空间调用函数

时间:2010-01-29 21:39:06

标签: r namespaces

我正在尝试更改R中包中的一些命令的功能。很容易看到命令的来源。但是,该函数调用包命名空间中的其他函数。这些函数不是导出的对象。那我怎么才能访问它们呢?

具体示例: 我如何访问copula :: rmvdc中使用的asCall()函数?

require(copula)
copula::rmvdc
getAnywhere("asCall")

因此as.Call()存在于copula包中,但我该如何访问它?

> copula::asCall
Error: 'asCall' is not an exported object from 'namespace:copula'

2 个答案:

答案 0 :(得分:64)

试试这个:

copula:::asCall

这是previously answered on R-help。该函数未在包命名空间中导出,因此您需要使用:::运算符。通常,功能在不用于一般用途时不会导出(例如,在这种情况下您不需要记录它们)。

答案 1 :(得分:12)

开发时,?assignInNamespace非常有用。

这允许您将未导出函数的新副本注入包的命名空间。

如果R&#39的错误消息更有帮助,那就太好了。而不是:

Error: 'matrixToPaths' is not an exported object from 'namespace:OpenMx'

为什么不添加:

You might try OpenMx:::matrixToPaths"