我创建了一个包“mypackage”(附加了一个命名空间“mypackage”)
在这个包中有一个函数,我可以用

'myfunction'

或者
'mypackage::myfunction'

现在我想用另一个版本替换myfunction(更新)。

我曾经做
source(path)

其中path是定义更新的“myfunction”的文件的路径

现在,我移至R 2.14.x,该系统无法正常工作,因为显然R会首先检查同一 namespace 中是否存在一个函数,如果存在,则使用该函数而不使用其他函数。

我的问题:如何将更新的函数插入与软件包一相同的 namespace 中?

最佳答案

参见?assignInNamespace。例如

assignInNamespace("myfunction", foo, "mypackage")

会将对象foo分配给命名空间"myfunction"中名为"mypackage"的对象。 foo可以是您想要的任何对象,甚至可以是myfunction,但是如果在全局环境/工作空间中也有mypackage::myfunction,则需要小心确保调用myfunction

关于r - 在特定 namespace 中定义函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8501906/

10-13 02:32