避免R

时间:2015-12-21 19:49:15

标签: r namespaces dplyr

由于引入了dplyr库,我最近遇到了现有R代码崩溃的情况。具体而言,stats包中的lag函数正由dplyr::lag替换。该问题先前已记录here,但未提供解决方法。对R名称空间和环境的研究导致了两种可能的解决方案,在我看来并不是非常强大:

  1. 确保package:stats路径中首先显示search(),以便lag解析为统计信息包中的功能。
  2. 将我的代码中lag的所有引用更改为stats::lag
  3. 我的问题是这些其他解决方案是否可行:

    1. 以某种方式加载dplyr包,强制它位于“私有”命名空间中,只能通过::运算符访问其对象。
    2. 库加载时的指令强制lag解析为stats::lag。这可以通过删除dplyr::lag或覆盖搜索路径来完成(类似于C ++ using namespace :: function 指令。)

1 个答案:

答案 0 :(得分:1)

您应该考虑library(conflicted),因为它正是针对此问题而设计的。
https://cran.r-project.org/web/packages/conflicted/index.html

在加载软件包后放入conflicted::conflict_prefer(name = "lag", winner = "stats")可以确保在脚本中每次调用函数lag()时,默认情况下都会使用stats函数。