Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从命名空间调用函数_R_Namespaces - Fatal编程技术网

R 从命名空间调用函数

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

我试图在R中改变包中几个命令的功能。很容易看到命令的源代码。但是,该函数调用包命名空间中的其他函数。这些函数不是导出对象。那么我怎样才能访问它们呢

具体示例:

如何访问copula::rmvdc中使用的asCall()函数

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函数,以满足您的需要。这不是开源的精神吗?