使用roxygen2为R内置数据集添加生成代码的文档渲染问题咨询
异常根因
两个语法问题直接导致渲染失效:
- roxygen2 默认的 Markdown 解析器不识别 knitr 专用的```{r} 可执行代码块标记,这类标记放到 roxygen 注释中会被当成普通文本,无法触发代码块格式渲染
- 代码块和前置说明文本之间没有空行分隔,解析器无法定位代码块的起始边界
修复操作
- 替换代码块围栏标记:把
{r} 改成`r `(去掉花括号,直接跟语言名),用标准 Markdown 语言标注格式,roxygen2 原生支持这种写法自动给R代码加语法高亮 - 补充分隔空行:在“通过以下代码生成:”的下一行加一行仅带
#'的空注释行,明确分隔普通文本和代码块 - 保持注释前缀一致:代码块的每一行内容、每一组围栏标记前面,都必须保留
#'前缀,不要遗漏
正确写法示例
#' @details #' 本数据集包含200条观测值,通过以下代码生成: #' #' ```r #' set.seed(123) #' N = 200 #' bsort.df = data.frame(n = rep(0, N), time = rep(0, N)) #' #' n = sample(100:1000, size = N, replace = TRUE) #' #' pb = txtProgressBar(0, N, style = 3) #' #' for(i in 1:N){ #' x = rnorm(n[i]) #' bsort.df$n[i] = n[i] #' bsort.df$time[i] = system.time(bubbleSort(x))[1] #' setTxtProgressBar(pb, i) #' } #' close(pb) #' ```
注意事项
- 上述写法同时兼容 R 内置帮助文档渲染、pkgdown 包网站构建两种场景,不需要额外开启特殊配置
- 只有需要嵌入动态生成的代码运行结果时,才需要额外配置 roxygen2 的 knitr 支持,单纯展示生成代码的场景用上述写法完全足够
内容的提问来源于stack exchange,提问作者James Curran
相关产品推荐
相关产品推荐

