使用R Knit在devtools创建的Vignette中插入代码块时出错求助
解决Vignette中sampleFromData函数运行报错的问题
看起来你在为simTools包构建vignette时,遇到了代码块无法正常运行的问题,我来梳理几个常见的排查方向和解决办法:
1. 检查包依赖的声明
你的vignette中用到了mangoTraining包,但如果你的simTools包的DESCRIPTION文件没有声明对它的依赖,knit过程可能会找不到这个包。
- 推荐做法:在项目根目录下运行以下命令,把
mangoTraining添加到DESCRIPTION的Suggests字段(因为vignette属于示例文档,用Suggests比Imports更合适):
devtools::use_package("mangoTraining", type = "Suggests")
- 之后重新构建你的包,或者确保在vignette的代码块开头明确加载
mangoTraining(你已经做了这一步,但依赖声明是更规范的做法)。
2. 明确指定数据集的来源
有可能demoData并没有被正确识别为mangoTraining包中的数据集,导致函数找不到输入数据。可以尝试在代码中明确指定数据集的包归属:
library(mangoTraining) # 明确指定demoData来自mangoTraining包 example1 <- sampleFromData(mangoTraining::demoData, size=5) example1
3. 确认vignette的运行环境
Knit vignette时通常会在一个干净的R环境中执行,和你平时的工作环境可能不同:
- 如果你在vignette中用到了
simTools包本身的功能,需要确保包被正确加载。可以在vignette开头添加:
devtools::load_all("../simTools")
- 或者先通过
devtools::build()构建你的包,再用library(simTools)加载,这样更符合CRAN的规范。
4. 先在控制台测试代码
先在R控制台中单独运行这段代码:
library(mangoTraining) example1 <- sampleFromData(demoData, size=5) example1
如果控制台能正常运行,说明问题出在vignette的运行环境或包依赖配置上;如果控制台也报错,那可能是mangoTraining包的版本问题,或者sampleFromData函数的参数使用有误,可以检查函数的帮助文档(?sampleFromData)确认用法。
内容的提问来源于stack exchange,提问作者thequadge
相关产品推荐
相关产品推荐

