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

如何在Quarto中用R将宽tibble导出为PDF?解决gt分组报错

修复Quarto PDF中宽表拆分的问题

gt_split()生成的gt_group对象目前不支持PDF输出,这就是你遇到报错的原因。要在PDF里实现宽表拆分效果,你可以手动将数据拆分为两个子表,分别生成gt表格后依次输出,具体方案如下:

基础实现方案

直接拆分数据框为前后两部分,分别创建gt表格:

---
title: "fixed"
format: pdf
---

```{r}
library(tidyverse)
library(gt)

ten_wide <- tribble(
  ~a, ~b, ~c, ~d, ~e, ~f, ~g, ~h, ~i, ~j,
  "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "gulf", "hotel", "india", "juliet",
  "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "gulf", "hotel", "india", "juliet",
)

# 拆分数据为前5列和后5列的子表
table_left <- ten_wide |> select(a:e) |> gt()
table_right <- ten_wide |> select(f:j) |> gt()

# 依次输出两个表格
table_left
table_right
## 统一样式优化方案
如果需要给两个子表添加统一的样式(比如标题、宽度调整),可以封装成函数复用:

```r
---
title: "fixed_with_style"
format: pdf
---

```{r}
library(tidyverse)
library(gt)

ten_wide <- tribble(
  ~a, ~b, ~c, ~d, ~e, ~f, ~g, ~h, ~i, ~j,
  "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "gulf", "hotel", "india", "juliet",
  "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "gulf", "hotel", "india", "juliet",
)

# 定义统一的表格样式函数
apply_gt_style <- function(df, table_title) {
  df |>
    gt() |>
    tab_header(title = table_title) |>
    tab_options(
      table.width = "100%",
      table.border.top.style = "solid",
      table.border.bottom.style = "solid"
    )
}

# 应用样式并输出拆分后的表格
apply_gt_style(ten_wide |> select(a:e), "表格左侧(列a-e)")
apply_gt_style(ten_wide |> select(f:j), "表格右侧(列f-j)")
这种方法能在PDF中生成两个独立的表格,效果和HTML中`gt_split()`的输出类似,同时适配打印页面的宽度。

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

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

最近更新时间:2026.06.15 19:54:52