R包开发:示例依赖内部函数触发R CMD Check报错的最优方案
R包开发:外部函数示例调用内部函数报错的正确处理方式
问题场景
开发自定义调色板R包时,存在两个通过@export对外暴露的函数,二者均依赖一个标记@keywords internal的内部函数。运行devtools::check()时,这两个外部函数的示例会因找不到内部函数报错,即便用my_package:::my_internal_function形式调用内部函数也无法解决。此前用\dontrun{}包裹示例代码规避报错,但这只是临时方案,想了解这类示例的标准处理方式。
首选处理方案
- 确保示例中加载包环境:在
@examples代码块开头添加library(my_package),devtools::check()运行示例时会在独立环境中加载包,此时包命名空间内的内部函数可被外部函数正确调用,无需直接在示例里显式调用内部函数。 - 开发阶段预加载包:编写示例时,先用
pkgload::load_all()加载包的开发版本,让内部函数在开发环境中可被识别,这样devtools::check()执行时能正确解析函数依赖关系。 - 聚焦外部函数用法:示例核心是展示对外暴露的函数功能,内部函数的逻辑已经被外部函数封装,无需在示例中直接调用内部函数。只演示外部函数的输入输出,既符合用户实际使用场景,也从根源避免内部函数的依赖问题。
后续更新
已无法复现该问题,问题已解决。
内容的提问来源于stack exchange,提问作者gira
相关产品推荐
相关产品推荐

