使用box包批量加载函数时无法访问帮助文档的问题
问题原因及解决办法
核心原因
当你通过box::use(code/functions[...])批量导入函数时,这些函数是父模块(code/functions)重新导出的别名,而非直接绑定到它们原本所在的子模块(hello/goodbye)。box::help()默认会根据当前环境中函数的归属模块查找文档,但父模块的__init__.R仅做了导入导出操作,没有为这些函数关联原本的roxygen文档元数据,因此提示无可用文档。
而直接加载子模块时,函数直接绑定到自身所在的子模块,box::help()能直接定位到子模块里的roxygen文档,所以能正常显示。
解决办法
在父模块中继承子模块文档
修改code/functions/__init__.R,明确导出函数并通过@inherit标签继承子模块的文档:#' @export #' @inherit hello::hello #' @export #' @inherit goodbye::goodbye box::use( ./hello[hello], ./goodbye[goodbye], )这样父模块导出的函数会关联上子模块的文档,
box::help(hello)就能正常调用。调用帮助时指定子模块路径
即使通过父模块批量导入,也可以直接指定子模块路径来获取文档:box::help(code/functions/hello)
内容的提问来源于stack exchange,提问作者Basil
相关产品推荐
相关产品推荐

