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

如何在gt表格中自定义行组标签(含上下标、换行)及样式调整

问题解决:gt表格行组HTML解析、垂直居中与加粗设置

问题分析

行组标签的HTML未解析、行组列未垂直居中、标签未加粗,核心原因是gt默认将行组标签视为纯文本,且未配置对应样式。

修正方案(两种实现方式)

方式一:使用Markdown语法(推荐,更简洁)

修正后的完整代码:

library(gt)
library(dplyr)

# 生成第一组数据
a <- rnorm(21, mean = 112, sd = 12)
colour <- rep(c("Blue", "Red", "Green"), 7)

data <- data.frame(colour, a) %>% 
  group_by(colour) %>% 
  summarise(mean = mean(a), sd = sd(a), n = n()) %>%
  mutate(grp = "[H~2~O]") %>%  # Markdown下标语法
  rename(cat = colour)

# 生成第二组数据(修正原代码中误用mean(a)的错误)
b <- rnorm(21, mean = 60, sd = 12)
day <- rep(c("2", "4", "6"), 7)

data2 <- data.frame(day, b) %>% 
  group_by(day) %>% 
  summarise(mean = mean(b), sd = sd(b), n = n()) %>%
  mutate(grp = "[H~2~O] Addition  \n(Days)") %>%  # Markdown换行(两个空格+回车)
  rename(cat = day)

# 构建带样式的gt表格
bind_rows(data, data2) %>% 
  gt(rowname_col = "cat") %>%
  # 将行组转为单独列
  tab_options(row_group.as_column = TRUE) %>%
  # 解析行组标签为Markdown,同时添加加粗效果
  opt_row_groups(
    label_fn = function(x) md(paste0("**", x, "**"))
  ) %>%
  # 设置行组标签垂直居中
  tab_style(
    style = cell_text(align = "center", v_align = "middle"),
    locations = cells_row_groups()
  ) %>%
  # 可选:设置行组列标题居中
  tab_style(
    style = cell_text(align = "center"),
    locations = cells_column_labels(columns = "row_group")
  )

方式二:使用HTML语法

如果偏好HTML标签,可采用以下代码:

library(gt)
library(dplyr)

# 生成第一组数据
a <- rnorm(21, mean = 112, sd = 12)
colour <- rep(c("Blue", "Red", "Green"), 7)

data <- data.frame(colour, a) %>% 
  group_by(colour) %>% 
  summarise(mean = mean(a), sd = sd(a), n = n()) %>%
  mutate(grp = "<strong>[H<sub>2</sub>O]</strong>") %>%  # HTML加粗+下标
  rename(cat = colour)

# 生成第二组数据(修正原代码错误)
b <- rnorm(21, mean = 60, sd = 12)
day <- rep(c("2", "4", "6"), 7)

data2 <- data.frame(day, b) %>% 
  group_by(day) %>% 
  summarise(mean = mean(b), sd = sd(b), n = n()) %>%
  mutate(grp = "<strong>[H<sub>2</sub>O] Addition <br> (Days)</strong>") %>%  # HTML换行+加粗
  rename(cat = day)

# 构建表格
bind_rows(data, data2) %>% 
  gt(rowname_col = "cat") %>%
  tab_options(row_group.as_column = TRUE) %>%
  # 解析行组标签中的HTML
  opt_row_groups(label_fn = html) %>%
  # 设置行组标签垂直居中
  tab_style(
    style = cell_text(align = "center", v_align = "middle"),
    locations = cells_row_groups()
  )

关键要点

  • HTML/Markdown解析:gt默认不解析行组标签的标记语言,必须通过opt_row_groups(label_fn = html)或label_fn = md指定解析函数。
  • 标签加粗:可直接在标签文本中加入Markdown的**或HTML的<strong>,配合解析函数生效。
  • 垂直居中:通过tab_style()选中cells_row_groups(),设置v_align = "middle"实现行组标签垂直居中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:11:12