r语言 - Undo `usethis::use_XYZ()`



我正在RStudio中用usethis开发一个包,试图利用最佳实践。以前,我运行过usethis::use_tidy_eval()。现在,我使用data.table,并通过运行usethis::use_data_table()来设置它。我收到警告,

Warning message:
replacing previous import ‘data.table:::=’ by ‘rlang:::=’ when loading ‘breakdown’ 

因为NAMESPACE包含两行:

importFrom(rlang,":=")
importFrom(data.table,":=")

事实证明,我不再需要usethis::use_tidy_eval(),所以我想恢复它,这样做可以消除警告。

如何撤消usethis助手函数所做的任何操作?我必须自己编辑NAMESPACE吗?我怎么知道usethis::use_tidy_eval()还修改了什么?撤销usethis::use_pipe()怎么样?

除非在运行该代码之前和之后进行Git提交,否则可能没有一种非常简单的方法。我会考虑的两种选择是:

读取函数的源代码。这可能需要一些跳跃来找到辅助函数的定义,但use_tidy_eval看起来像:

  1. roxygen添加到DESCRIPTION中的Suggests
  2. rlang添加到DESCRIPTION中的Imports
  3. 添加模板R文件tidy-eval.R
  4. 要求您运行document(),这实际上是更新NAMESPACE的内容。您可以通过在模板文件中查找importFrom-roxygen标记来查找添加的行

要撤消此操作,应该可以删除以上所有内容。但是,您需要小心一点——例如,如果您从tidy-eval.R之外的rlang导入函数,则从DESCRIPTION中删除它可能会阻止安装。如果这些问题真的发生了,希望devtools::check()能揭露出来。

另一种选择是获取包的旧版本,运行use_tidy_eval((和document((,然后比较更改。这将是更全面的,可能会抓住我上面错过的东西,但同样的注意事项仍然适用,即不一定能扭转一切。

use_pipe()的策略相同。

旁注:可能有一些方法可以充分限定:=的不同用途,以便两者可以在您的包中共存,以防更可取。

我知道这是一篇旧帖子,但如果其他人也遇到类似的问题,我会发布我的答案。

我的问题是,我错误地试图将一个函数(fp_border(从一个不存在于(flextable(中的包中导入到我的包中[仅供参考,fp_border()officer包中,而不是flextable],函数为use this::use_import_from()

毫不奇怪,当我运行devtools::check()时,我得到了错误:

对象"fp_border"未由"namespace:flextable"导出

快速修复方法是删除我的包的NAMESPACE文件,手动编辑我的包源代码("R/pgkname package.R"(以删除不正确的roxygen2注释(#' @importFrom flextable fp_border(,然后重新运行devtools::document()以生成新的NAMESPACE文件。

相关内容

  • 没有找到相关文章

最新更新