如何撤销usethis工具函数操作?含use_tidy_eval与use_pipe场景
问题背景
在RStudio中使用usethis开发R包,此前执行过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()?
1. 撤销usethis辅助函数操作:是否需要手动编辑NAMESPACE?
大部分usethis辅助函数没有专门的"撤销"接口,针对你的场景可以这么处理:
- 解决当前
:=冲突:直接手动编辑NAMESPACE文件,删除importFrom(rlang,"::=")这一行即可消除警告,这是最直接高效的方式。 - 若要彻底撤销
use_tidy_eval()的所有修改,需先明确它改动的文件(见下一部分),再逐一还原。
2. 查看usethis::use_tidy_eval()修改的内容
可以通过以下方式回溯改动:
- 检查
DESCRIPTION文件:use_tidy_eval()会把rlang添加到Imports字段,若不需要可删除对应条目。 - 检查
NAMESPACE文件:除了:=的导入,它还可能添加importFrom(rlang, enquos)等其他tidy eval相关导入,按需删除不需要的行。 - 查看Git版本历史(如果用Git管理包):通过Git的提交记录或文件差异,能精准看到
use_tidy_eval()执行时修改的所有文件和内容,这是最可靠的回溯方式。
3. 撤销usethis::use_pipe()的操作
use_pipe()的核心改动及还原步骤:
- 编辑
DESCRIPTION:删除magrittr(或rlang,取决于你选择的pipe实现)在Imports中的条目。 - 编辑
NAMESPACE:删除importFrom(magrittr,"%>%")(或对应rlang的pipe导入行)。 - 如果
use_pipe()创建了R/utils-pipe.R文件(用于自定义pipe导出),直接删除该文件即可。 - 同样,Git版本历史可以帮你确认所有被修改的内容,确保完全撤销。
内容的提问来源于stack exchange,提问作者Jollywatt
相关产品推荐
相关产品推荐

