编写 R 包时如何导入“%>%”?

How do I import "%>%" when writing an R package?

我在加载我正在编写的 R 包时 运行 遇到以下错误。

Error in nations %>% rvest::html_nodes(".x") %>% rvest::html_nodes(".y") %>%  : 
  could not find function "%>%"

我不确定如何在我的 R 包中导入它。这就是我设置函数的方式

 nations_url_odd<-nations %>%
    rvest::html_nodes('.x') %>%
    rvest::html_nodes('.y') %>%
    rvest::html_nodes('a')

使用以下行在您的包中创建一个 reexports.R 文件:

#' @importFrom magrittr %>%
#' @export
magrittr::`%>%`

这将使管道可用于您的包并将其重新导出给您的包的用户,因此当他们加载或附加您的包时,管道将可供他们使用(他们不必同时加载 magrittr) .这可以通过 usethis::use_pipe() 自动执行(参见 https://usethis.r-lib.org/reference/use_pipe.html). As @user2554330 mentions below, this solution depends on the use of roxygen2.

如果您是 roxygen2 用户,

@Wil 会提供最佳解决方案。如果没有,那么正如@ArtemSokolov 在评论中所说,将此行添加到您的 NAMESPACE 文件中:

importFrom(magrittr,"%>%")

如果您还希望您的包的用户能够在没有 library(magrittr) 调用或类似的情况下使用管道,也将此行添加到 NAMESPACE:

export("%>%")

您还需要确保您的 DESCRIPTION 文件在 Imports: 行包含 magrittr,例如

Imports: magrittr