我最近遇到一个问题,现有的R代码因引入dplyr库而破损。具体来说,stats包中的lag函数将被dplyr::lag取代。这个问题之前已经在此处here进行了记录,但是没有提供解决方案。对R命名空间和环境进行的研究得出2种可能的解决方案,在我看来都不太健壮:
- 确保
package:stats
在search()
路径中首先出现,这样lag
就会解析成stats包中的函数。 - 在我的代码中更改所有
lag
的引用为stats::lag
- 以一种强制使其成为“私有”命名空间的方式加载dplyr包,其中它的对象只能通过
::
操作符访问。 - 在库加载时使用指令强制
lag
解析为stats::lag
。这可以通过删除或覆盖搜索路径(类似于C++的using namespace::function指令)来完成。
lag
指的是stats::lag
的一种非常简单的方法是,只需执行lag <- stats::lag
。全局环境优先于包命名空间出现在搜索路径中。 - Gregor Thomas