【问题标题】:No need to import `!!!` operators into the package DESCRIPTION?不需要将`!!!`操作符导入包DESCRIPTION?
【发布时间】:2019-04-26 13:57:12
【问题描述】:

我正在尝试使用dplyr 构建一个包。我广泛使用了来自rlang!!!!! 运算符。

然而,我没有明确地import 他们,尽管这个包似乎仍然可以工作。

我是否在环境中遗漏了什么,或者import(dplyr) 是否以某种方式涵盖了这一点?

【问题讨论】:

  • dplyr 已经导入它们并且您导入了整个dplyr。在我看来似乎还可以。
  • 那些不是常规的 R 函数:它们由 rlang::quo 等由 dplyr 导入和重新导出的函数专门处理。
  • 是的,从技术上讲,R 解析器无法将 !!!!! 识别为它们自己的函数。它只看到对一元 ! 函数的多次调用。 tidyverse 选择通过非标准的评估以特殊的方式重新解释它们。因此,由于它们不是函数,因此您不必担心导入它们。

标签: r dplyr devtools rlang


【解决方案1】:

如上所述,dplyrrlang 重新导出 tidyeval 依赖项,因此如果您在 Imports 中有 dplyr,则无需显式导入 rlang。但是,可能值得询问您是否需要所有 dplyr,或者只需要 tidyeval 部分 - 为了将依赖关系降至最低,有一些话要说。 rlang 是一个非常轻量级的软件包依赖项,因此如果您可以摆脱只依赖它直接依赖它,它可以使您的软件包更快地安装并且(理论上)不太可能因外部更新而中断。

如果您发现自己在包开发中使用了大量的引用和取消引用运算符,您还可以查看usethis package's "tidyverse development helpers"usethis::use_tidy_eval() “导入一组标准帮助程序,以方便使用 tidy eval 工具包进行编程。”这是一种将rlang 添加到Imports 的快速简便的方法,以及导入/再导出和记录(en)quo(s)(en)sym(s)(en)expr(s)、函数、.data 代词和:=。然后你应该有你需要在你的包中使用 tidyeval 的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2022-10-17
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多