如何检查R中是否意外重新定义了函数名称

时间:2016-04-07 19:45:02

标签: r

我正在编写一些相当复杂的R代码,这些代码分布在多个文件中,并一起收集到一个包中。我偶尔遇到的一个问题是,我将在一个文件中定义一个实用程序函数,该文件与另一个文件中定义的另一个实用程序函数同名。其中一个定义被替换,导致意外行为。是否有任何工具来检查这种意外重新定义?可以检查包中没有两个顶级作业foo <- ...分配给同一名称的东西吗?

1 个答案:

答案 0 :(得分:0)

正如评论中所指出的,正确的方法是使用包。包自动为函数提供自己的命名空间,而且它们使重用和共享代码变得非常容易。如果你正在使用RStudio,你可以从New Project菜单中轻松创建一个。

但是,如果由于某种原因无法使用包或名称空间,仍然可以使用您想要的方法:您可以锁定变量(包括函数),以便无法覆盖它。

> pin <- 11
> lockBinding("pin", .GlobalEnv)
> pin <- 12
Error: cannot change value of locked binding for 'pin'

有关详细信息,请参阅Binding and Environment Locking