在特定命名空间中定义一个函数。

6
我已经创建了一个名为“mypackage”的包(附带命名空间“mypackage”)。 在这个包中,有一个函数可以通过以下两种方式之一调用。
'myfunction'

或者

'mypackage::myfunction'

现在我想用更新的版本替换myfunction。
我以前会这样做:
source(path)

其中path是定义更新的'myfunction'的文件路径。

现在我转移到了R 2.14.x,但这个系统不起作用,因为显然R首先检查是否有一个函数在相同的命名空间中,如果有一个函数在相同的命名空间中,它将使用这个函数而不是其他函数。

我的问题是:如何将更新的函数推到与包函数相同的命名空间中?

1个回答

9
请参见?assignInNamespace。例如:
assignInNamespace("myfunction", foo, "mypackage")

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接