搭建R包开发环境及同时加载CRAN版与本地开发版对比测试方法
同时加载CRAN版与本地开发版R包的实用方法
两种可行方案
方案一:不改包名,通过临时环境调用(快速测试首选)
不用修改任何包代码,就能同时对比两个版本的函数:
- 先加载CRAN正式版:
library(package) - 把本地开发版的路径存为变量,比如
dev_pkg_path <- "~/你的本地包目录路径" - 用
devtools::load_all()把开发版加载到临时环境,之后分别调用两个版本的函数:# 加载CRAN版 library(package) # 加载本地开发版到临时环境 dev_env <- devtools::load_all(dev_pkg_path, export_all = FALSE) # 调用CRAN版函数 package::your_test_function() # 调用开发版函数 dev_env$your_test_function()
这种方式不会污染全局命名空间,测试完关闭会话就清空了,很安全。
方案二:修改本地包名,实现独立加载(符合你要的library(packageDev)需求)
如果一定要用独立的包名加载开发版,按以下步骤操作:
- 打开本地开发版包根目录下的
DESCRIPTION文件,把Package:字段的值改成packageDev,顺便把Title、Description里的包名描述改一下(可选,但更规范) - 在本地安装修改后的开发版:
devtools::install("~/你的本地包目录路径") - 现在就能同时加载两个版本:
# 加载CRAN正式版 library(package) # 加载本地开发版 library(packageDev) # 分别调用对比 package::your_test_function() packageDev::your_test_function()
- 注意:每次修改开发版代码后,重新执行
devtools::install()更新本地的packageDev即可,这个修改后的版本只会在你本地存在,只要不把修改后的DESCRIPTION推送到GitHub,就不会公开。
小提醒
- 尽量避免在同一个会话中反复加载卸载两个版本,容易出现命名空间冲突,实在要切换就重启R会话
- 开发版的依赖包可以用
devtools::install_deps()快速安装
内容的提问来源于stack exchange,提问作者user19904
相关产品推荐
相关产品推荐

