R包构建中的冲突包

Conflicted package in R package building

我正在创建我的第一个包,这里我正在做一些 var 估计,函数是 运行,但是,我使用具有相同函数名称的包。

在编写程序包之前,我制作了一个包含函数的 R 脚本并测试它是否有效,但在脚本的顶部我使用了以下代码:

invisible(lapply(c("tibble","readxl","dplyr","stringr", "tidyr", "vars", "conflicted","forecast", "lubridate"), library, character.only = T))
conflict_prefer("select","dplyr")
conflict_prefer("lag", "dplyr")
conflict_prefer("filter", "dplyr")

冲突的包选择了函数 selectlag,并且 filter 来自 dplyr 包而不是 stats 包。

所以我还没有想出如何使用conflict_prefer包中函数

它们应该是我函数的第一行吗?

有更喜欢同名函数的 roxygen 方法吗?

我问这个是因为我收到这个警告:

> devtools::load_all()
i Loading FAVAR.MEF
Warning messages:
1: replacing previous import ‘dplyr::filter’ by ‘stats::filter’ when loading ‘FAVAR.MEF’ 
2: replacing previous import ‘dplyr::lag’ by ‘stats::lag’ when loading ‘FAVAR.MEF’ 
3: replacing previous import ‘stats::filter’ by ‘dplyr::filter’ when loading ‘FAVAR.MEF’ 
4: In setup_ns_exports(path, export_all, export_imports) :
  Objects listed as exports, but not present in namespace: favar_est

提前致谢!!

如果您正在编写自己的包并使用外部依赖项,则不应通过重复调用 library.

来加载它们

正确的方法是在包的 DECRIPTION 文件中声明依赖项,这意味着在加载包时,依赖项会以正确的顺序放在搜索路径中。在您的情况下,这消除了对 conflict_prefer 的需要,因为 dplyr 在搜索路径上比 stats 更高。它还使您的软件包可移植,因为任何安装您的软件包的人都会根据 DESCRIPTION 文件中列出的软件包自动安装任何缺少的依赖项。此外,这样做允许您指定最低版本的依赖项,这样任何已经安装了旧版本依赖项的人在尝试使用您的包时都不会遇到模糊的错误。

DESCRIPTION 文件位于包的根目录中。这是一个简单的文本文件。

您只需添加:

Depends:
  tibble,
  readxl,
  dplyr,
  stringr, 
  tidyr, 
  vars, 
  conflicted, 
  forecast, 
  lubridate

在此文件中,您的依赖项将与您的包一起加载。