如何在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
相关产品推荐
相关产品推荐

