R 从命名空间调用函数
我试图在R中改变包中几个命令的功能。很容易看到命令的源代码。但是,该函数调用包命名空间中的其他函数。这些函数不是导出对象。那么我怎样才能访问它们呢 具体示例: 如何访问copula::rmvdc中使用的asCall()函数R 从命名空间调用函数,r,namespaces,R,Namespaces,我试图在R中改变包中几个命令的功能。很容易看到命令的源代码。但是,该函数调用包命名空间中的其他函数。这些函数不是导出对象。那么我怎样才能访问它们呢 具体示例: 如何访问copula::rmvdc中使用的asCall()函数 require(copula) copula::rmvdc getAnywhere("asCall") 所以copula包中存在as.Call(),但是如何访问它呢 > copula::asCall Error: 'asCall' is not an exported
require(copula)
copula::rmvdc
getAnywhere("asCall")
所以copula包中存在as.Call()
,但是如何访问它呢
> copula::asCall
Error: 'asCall' is not an exported object from 'namespace:copula'
试试这个:
copula:::asCall
这是我的。该函数未在包名称空间中导出,因此需要使用:
运算符。通常情况下,当函数不用于一般用途时,不会导出它们(例如,在这种情况下,您不需要对它们进行文档化)。在开发时?这是非常有用的
这允许您将未导出函数的新副本注入到包的命名空间中
如果R的错误消息更有用,那就太好了。而不是:
Error: 'matrixToPaths' is not an exported object from 'namespace:OpenMx'
为何不加上:
You might try OpenMx:::matrixToPaths"
我不敢相信。。。我尝试了copula:asCall,然后是copula::asCall,然后说“嗯,hellifiknow”“为什么不添加…”,因为您不应该访问包的私有对象。这就是为什么他们被称为“私人”的原因。事实上,人们可能会问为什么
::
操作符甚至存在。:
允许您修改使用内部对象的pkg函数,以满足您的需要。这不是开源的精神吗?