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

R语言:在gt表格中按列前缀规则添加行内换行

解决方案

步骤说明

核心思路是先将B列按指定规则合并成带换行标记的单列,再通过gt的markdown解析实现换行,同时保留图标转换逻辑:

  1. 重组数据:把B1-B10按B1-B3、B4-B6、B7-B9、B10分成4组,组间用<br>标记换行,组内元素用空格分隔保证横向排列。
  2. 启用markdown解析:让gt识别<br>为换行符,实现分组换行。
  3. 图标转换:将每个元素替换为对应图片标签,同时保留分组换行结构。
  4. 调整间距:设置行内文字行高,让分组既紧凑又清晰分隔。

完整代码

library(gt)
library(purrr)
library(stringr)

# 原始数据框
Test <- structure(list(A1 = c("SP2", "SP1"), A2 = c(NA_character_, NA_character_
), B1 = c("AP2", "HN2"), B2 = c("HN2", "IP2"), B3 = c("HP2", 
"KN2"), B4 = c("IN2", "KP2"), B5 = c("JN2", "NP2"), B6 = c("KN2", 
"RN2"), B7 = c("KP2", "SN2"), B8 = c("NP2", "TP2"), B9 = c("RN2", 
"AP1"), B10 = c("SN2", "FP1")), row.names = c(NA, -2L), class = "data.frame")

# 数据预处理:合并B列分组
Test_processed <- Test %>%
  mutate(
    B_group = paste0(
      paste(B1, B2, B3, sep = " "),
      "<br>",
      paste(B4, B5, B6, sep = " "),
      "<br>",
      paste(B7, B8, B9, sep = " "),
      "<br>",
      B10
    )
  ) %>%
  select(A1, A2, B_group) # 保留需要的列

# 生成带分组换行的gt表格
Test_processed %>%
  gt() %>%
  fmt_markdown(columns = everything()) %>% # 启用markdown解析,识别<br>换行
  # tab_options(column_labels.hidden = TRUE) # 如需隐藏列标签可取消注释
  text_transform(
    locations = cells_body(columns = everything()),
    fn = function(x) {
      map_chr(x, function(cell_content) {
        if(is.na(cell_content)) return("") # 处理NA值
        # 拆分分组和元素,转换为图片标签
        groups <- str_split(cell_content, "<br>")[[1]]
        group_images <- map_chr(groups, function(group) {
          elements <- str_split(group, " ")[[1]]
          paste0(map_chr(elements, ~ local_image(filename = paste0(.x, ".png"), height = 15)), collapse = " ")
        })
        # 重新拼接带换行的图片标签
        paste0(group_images, collapse = "<br>")
      })
    }
  ) %>%
  tab_style(
    style = cell_text(line_height = 1.2), # 调整行高,保证分组间距紧凑清晰
    locations = cells_body()
  )

关键细节解释

  • 分组合并:通过paste0和<br>实现分组换行标记,组内用空格分隔确保图标横向并排。
  • 图标转换逻辑:先按<br>拆分分组,再拆分每组内的元素,逐个转换为图片标签后重新拼接,保留换行结构。
  • 间距调整:line_height = 1.2让分组间的垂直间距既紧凑又不会过于拥挤,保证视觉分隔清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:34:59