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

如何用R的gt包实现企鹅数据按物种、岛屿分两行分组并美化?

解决gt包分组行分两行显示并自定义样式的问题

要实现物种分组在上、岛屿分组在下的两行显示效果,同时为不同层级分组设置不同背景色,可按以下方式修改代码:

核心实现思路

  • 利用Markdown换行标签<br>将合并的分组内容拆分为两行
  • 通过cells_row_groups()的level参数区分一级(物种)和二级(岛屿)分组,分别配置样式

完整代码

library(palmerpenguins)
library(gt)

# 处理数据集缺失值
penguins_no_na <- na.omit(penguins)

# 构建表格并配置分组样式
penguins_no_na |> 
  gt(groupname_col = c("species", "island")) |>
  # 转换分组文本:拆分后用换行符分隔并加粗
  text_transform(
    locations = cells_row_groups(),
    fn = function(x) {
      lapply(x, function(item) {
        # 按默认分隔符拆分分组内容
        parts <- strsplit(item, split = " - ")[[1]]
        # 用<br>实现换行,同时为所有内容添加加粗格式
        gt::md(paste0("**", paste(parts, collapse = "<br>**"), "**"))
      })
    }
  ) |>
  # 设置一级分组(物种)样式:黄色背景、黑色加粗文本
  tab_style(
    style = list(
      cell_fill(color = "yellow"),
      cell_text(color = "black", weight = "bold")
    ),
    locations = cells_row_groups(level = 1)
  ) |>
  # 设置二级分组(岛屿)样式:蓝色背景、黑色加粗文本
  tab_style(
    style = list(
      cell_fill(color = "blue"),
      cell_text(color = "black", weight = "bold")
    ),
    locations = cells_row_groups(level = 2)
  )

代码说明

  1. 换行效果:在text_transform中,将拆分后的分组内容用<br>连接,gt会自动解析Markdown标签实现换行
  2. 层级区分:level = 1对应第一级分组(species),level = 2对应第二级分组(island),以此实现不同背景色的精准设置
  3. 文本样式:直接通过cell_text(weight = "bold")设置加粗,替代手动拼接格式字符串,代码更简洁易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:16:08