如何在R包vignette中插入roxygen2记录的函数入参说明文档?
可直接提取roxygen2参数注释插入vignette,有两种常用实现方案:
方案1:使用Rdpack包动态提取(推荐,无构建环境依赖限制)
这是通用性最高的方案,不需要依赖pkgdown生态,任意R Markdown格式的vignette都可以用:
- 第一步:在包的
DESCRIPTION文件的Suggests字段中添加Rdpack - 第二步:在vignette中插入如下R代码块,设置代码块参数
echo=FALSE, results='asis'即可直接输出格式化的参数说明:
# 加载你的开发包,示例包名为yourpkg library(yourpkg) # 获取目标函数的Rd文档(即roxygen注释编译生成的帮助文档) target_rd <- Rdpack::get_Rd("your_function_name", package = "yourpkg") # 提取arguments区块(对应roxygen的@param部分) param_section <- Rdpack::Rdo_get_section(target_rd, "arguments") # 转换为markdown格式输出 Rdpack::Rd2md(param_section)
如果只需要提取单个特定参数的说明,可以用以下代码过滤:
# 提取名为x的参数说明 x_param <- Rdpack::Rdo_lookup_arg(target_rd, "x") Rdpack::Rd2md(x_param)
方案2:基于pkgdown工具链提取
如果你已经在使用pkgdown构建包站点,可以直接调用pkgdown内置的转换能力:
# 读取目标函数帮助文档 target_help <- utils::help("your_function_name", package = "yourpkg") # 转换为markdown格式 md_content <- pkgdown:::rd2markdown(target_help) # 过滤对应参数的段落输出 cat(grep("^`x`:", md_content, value = TRUE))
注意事项
- 动态提取需要确保vignette构建环境中你的包已经被正确安装,开发阶段用
devtools::load_all()加载后也可正常运行 - 不推荐预提取参数内容硬编码到vignette中,会导致roxygen注释更新后vignette内容不同步
内容的提问来源于stack exchange,提问作者Lennart Oelschläger
相关产品推荐
相关产品推荐

