You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RMarkdown调用render()无法输出嵌入函数内的gt表格问题

问题原因与解决方法

问题出在非交互式环境下gt表格的输出机制:当用rmarkdown::render()生成HTML时,属于非交互式执行场景,直接调用print()输出gt表格,无法将表格的HTML代码正确传递给rmarkdown的输出流,导致表格不显示;而RStudio的Knit按钮或控制台属于交互式环境,gt的print()方法会自动适配渲染逻辑,所以能正常显示。

修改方案

调整函数逻辑,用gt::as_raw_html()将gt表格转换为HTML字符串,再通过cat()输出,配合代码块的results = "asis"参数,让rmarkdown直接解析这些HTML代码:

---
title: "illustrate problem"
output: html_document
---

Define a short function that prints two summaries:
```{r step_1}
library(tidyverse); library(gt)
egads <- function(df) {
  # 转换为HTML并输出第一个表格
  df %>% select(mpg, cyl) %>% gt() %>% as_raw_html() %>% cat()
  # 添加换行分隔两个表格
  cat("\n\n")
  # 转换为HTML并输出第二个表格
  df %>% select(disp, hp) %>% gt() %>% as_raw_html() %>% cat()
}

Next I exercise the function:

egads(mtcars)
### 原理说明
`as_raw_html()`会直接提取gt表格对应的HTML代码,`cat()`将这些代码输出到rmarkdown的输出流中,`results = "asis"`告诉rmarkdown不要对输出内容进行转义,直接按HTML规则渲染,这样就能在`render()`生成的HTML文件中正常显示两个表格了。

内容的提问来源于stack exchange,提问作者Rick Donnelly
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:45:16