R:从命名空间调用函数

JD *_*ong 28 namespaces r

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

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

require(copula)
copula::rmvdc
getAnywhere("asCall")
Run Code Online (Sandbox Code Playgroud)

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

> copula::asCall
Error: 'asCall' is not an exported object from 'namespace:copula'
Run Code Online (Sandbox Code Playgroud)

Sha*_*ane 65

试试这个:

copula:::asCall
Run Code Online (Sandbox Code Playgroud)

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

  • 我不敢相信......我尝试了copula:asCall然后copula :: asCall然后说"well hellifiknow" (12认同)

tim*_*tim 13

在开发时,?assignInNamespace 非常有用.

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

如果R的错误消息更有帮助,那就太好了.代替:

Error: 'matrixToPaths' is not an exported object from 'namespace:OpenMx'
Run Code Online (Sandbox Code Playgroud)

为什么不添加:

You might try OpenMx:::matrixToPaths"
Run Code Online (Sandbox Code Playgroud)