R Markdown编织时列表内gtsummary表格输出原始HTML无法渲染怎么办
解决方案
核心原因
R Markdown默认会转义代码块内非顶层返回的HTML内容,直接print()列表或者循环内输出的表格对象不会被识别为需要渲染的HTML组件。
解决步骤
- 给对应代码块添加
results='asis'属性,告诉knitr直接将输出作为原生内容处理,不做转义。 - 使用
knitr::knit_print()处理gtsummary对象,输出正确的可渲染HTML代码。
代码示例
方法1:使用purrr遍历(更简洁)
--- title: "html-render-issue" output: html_document ---
library(tidyverse) library(gtsummary) tables <- list(tbl_summary(iris), tbl_summary(cars))
# 注意代码块声明处加 results='asis' {r, results='asis', echo=FALSE} purrr::walk(tables, ~print(knitr::knit_print(.x)))
方法2:使用base R for循环
# 注意代码块声明处加 results='asis' {r, results='asis', echo=FALSE} for (i in seq_along(tables)) { print(knitr::knit_print(tables[[i]])) # 可选:表格之间添加分隔空白 cat("<br><hr><br>") }
拓展用法
如果需要给每个表格添加自定义标题,可以用purrr::walk2批量处理:
{r, results='asis', echo=FALSE} table_titles <- c("鸢尾花数据集统计结果", "汽车速度与刹车距离统计结果") purrr::walk2(tables, table_titles, function(tbl, title) { cat(paste0("## ", title, "\n\n")) print(knitr::knit_print(tbl)) cat("\n\n<br>") })
内容的提问来源于stack exchange,提问作者Hank Lin
相关产品推荐
相关产品推荐

