在特定命名空间中定义函数

时间:2011-12-14 09:11:09

标签: r namespaces

我创建了一个包'mypackage'(附带了命名空间'mypackage') 在这个包中有一个我可以用

调用的函数
'myfunction'

'mypackage::myfunction'

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

我曾经做过

source(path)

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

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

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

1 个答案:

答案 0 :(得分:8)

请参阅?assignInNamespace。例如

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

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