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

如何在Quarto代码块中打印多个gt表格?

在Quarto中批量渲染gt表格列表的解决方案

我有一个gt表格列表,想要在Quarto中展示出来。之前在RMarkdown里,只需在设置了results = "asis"的代码块内使用walk(tabs, print)语句就能实现,但在Quarto中尝试以下代码时渲染失败:

---
title: "Untitled"
format: html
editor: source
---

```{r}
library(tidyverse)
library(gt)
df <- mtcars[1:5, 1:2] 
tab <- gt(df)
#| results: asis
rep(list(tab), 3) %>%
  walk(print)
报错信息(已翻译为中文):

运行过滤器 C:/Users/xxxxx/AppData/Local/Programs/Quarto/share/filters/quarto-pre/quarto-pre.lua 时出错:
.../Programs/Quarto/share/filters/quarto-pre/quarto-pre.lua:2555: 尝试拼接 nil 值(局部变量 'v')
堆栈跟踪:
.../Programs/Quarto/share/filters/quarto-pre/quarto-pre.lua:2562: 在函数 <.../Programs/Quarto/share/filters/quarto-pre/quarto-pre.lua:2560> 中

### 解决方案
问题根源在于Quarto对`print(gt_object)`输出的处理逻辑和RMarkdown存在差异。可以通过将gt表格转为HTML字符串后直接输出的方式解决:

修改后的代码如下:
```yaml
---
title: "Untitled"
format: html
editor: source
---

```{r}
library(tidyverse)
library(gt)
df <- mtcars[1:5, 1:2] 
tab <- gt(df)
#| results: asis
rep(list(tab), 3) %>%
  walk(function(x) {
    # 将gt表格转为HTML字符串并输出
    cat(as_raw_html(x))
    # 可选:添加换行标签让表格之间间隔更清晰
    cat("<br><br>")
  })

说明

  • gt::as_raw_html()会把gt对象转换为Quarto能够正确解析的原生HTML代码
  • cat()直接输出这些HTML内容,配合代码块的results = "asis"设置,Quarto会将输出当作页面的一部分渲染
  • 额外添加的<br><br>标签可以让多个表格之间保持合适的间距,可根据需求选择是否保留

内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:18:12