避免R中的函数名冲突

问题描述 投票:4回答:1

我最近遇到了一个情况,由于引入了 dplyr 库。 具体来说, lag 函数取代了统计包中的 dplyr::lag. 这个问题以前就有记载 此处但没有提供任何解决方法。 对R命名空间和环境的研究导致了2种可能的解决方案,在我看来都不是很稳健。

  1. 确保 package:stats 先出现在 search() 径,以便 lag 解析为 stats 包中的函数。
  2. 将所有对 lag 在我的代码中,以 stats::lag

我的问题是,这些其他的解决方案是否可以。

  1. 装入... dplyr 包的方式来强制它进入一个 "私有 "的命名空间,在这个空间里,它的对象只能通过 :: 操作员。
  2. 在库加载时,一个指令强制 lag 以此作为 stats::lag. 这可以通过删除 dplyr::lag 或覆盖搜索路径(类似于C++的 使用namespace::function 指令)。)
r namespaces dplyr
1个回答
1
投票

你应该考虑 library(conflicted) 因为它正是为这个问题而设计的。https:/cran.r-project.orgwebpackagesconflictedindex.html。

conflicted::conflict_prefer(name = "lag", winner = "stats") 加载软件包后,确保在任何时候只要函数 lag() 在你的脚本中调用,它将默认使用stats函数。

© www.soinside.com 2019 - 2024. All rights reserved.