我正在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
看起来像:
- 将
roxygen
添加到DESCRIPTION
中的Suggests
- 将
rlang
添加到DESCRIPTION
中的Imports
- 添加模板R文件
tidy-eval.R
- 要求您运行
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文件。