指定keep_source=TRUE安装diveRsity后,RStudio调试diffCalc无法显示源码怎么办?
解决diveRsity包diffCalc函数调试时源码不可用的问题
你遇到的问题核心是安装后的包没有保留函数与本地源码文件的关联,导致RStudio无法定位到带注释的源码。下面是具体的修正步骤和原因解释:
一、正确的调试姿势:使用开发模式加载包
不要用devtools::install安装包,而是直接用devtools::load_all加载本地克隆的仓库,这是R包开发/调试的标准做法:
# 加载本地克隆的diveRsity包(替换为你的实际路径) devtools::load_all("diveRsity/") # 之后正常加载包并调试 library(diveRsity) debug(diffCalc) # 运行你的测试代码 data(Test_data, package = 'diveRsity') Test_data[is.na(Test_data)] <- "" test_result <- diffCalc( infile = Test_data, outfile = "myresults", fst = TRUE, pairwise = TRUE, bs_locus = TRUE, bs_pairwise = TRUE, boots = 1000, para = TRUE )
执行后,你应该能直接在RStudio中看到带注释的diffCalc源码,且attributes(diffCalc)会包含srcref属性。
二、为什么之前的操作无效?
你用devtools::install(keep_source = TRUE)虽然保留了源码,但安装过程会把包复制到系统的R库目录中,并且默认会剥离掉函数与本地源码文件的关联(srcref属性)。而devtools::load_all是在开发模式下加载包,它会直接读取你克隆仓库中的R脚本文件,完整保留函数与源码的绑定关系,自然就能支持调试时定位到带注释的代码。
三、额外检查点
如果使用load_all后还是有问题,确认以下两点:
- 你克隆的仓库是完整的:检查
diveRsity/R/目录下是否存在diffCalc.R文件(这是函数的源码文件) - 确保没有加载其他版本的diveRsity:运行
detach("package:diveRsity", unload = TRUE)后再重新load_all
内容的提问来源于stack exchange,提问作者akraf
相关产品推荐
相关产品推荐

