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

如何使用str_detect(或正则)更改gt表格中文字颜色或高亮?

问题解决:gt表格中指定词汇高亮的错误修复

错误原因

你遇到的Error: object 'Name' not found,是因为在tab_style的cell_text参数中直接引用列名Name,gt的样式上下文无法直接访问原始数据框的列,必须通过gt提供的专用接口来处理数据匹配。

两种可行解决方案

方案1:整单元格变色(匹配行后设置样式)

如果需要给包含目标词汇的整个单元格设置颜色,可以通过rows参数筛选匹配的行,再分别设置样式:

library(gt)
library(stringr)

data <- data.frame(
  Name = c("John Doe", "Jane Smith", "Bob Johnson"),
  Age = c(30, 25, 35))

highlight_word <- "Doe"

gt(data) |> 
  # 给包含目标词汇的单元格设置黄色
  tab_style(
    locations = cells_body(columns = Name, 
                          rows = str_detect(Name, highlight_word)),
    style = list(cell_text(color = "yellow"))) |>
  # 给不包含的单元格设置白色
  tab_style(
    locations = cells_body(columns = Name, 
                          rows = !str_detect(Name, highlight_word)),
    style = list(cell_text(color = "white")))

方案2:仅高亮单元格内的目标词汇(更精准)

如果只想高亮单元格中的指定词汇(而非整个单元格),可以用text_transform结合HTML标记实现,最后通过fmt_markdown让格式生效:

library(gt)
library(stringr)

data <- data.frame(
  Name = c("John Doe", "Jane Smith", "Bob Johnson"),
  Age = c(30, 25, 35))

highlight_word <- "Doe"

gt(data) |>
  text_transform(
    locations = cells_body(columns = Name),
    fn = function(x) {
      # 用HTML span标记包裹目标词汇,设置颜色
      str_replace_all(x, 
                      highlight_word, 
                      paste0("<span style='color:yellow'>", highlight_word, "</span>"))
    }) |>
  fmt_markdown(columns = Name) # 解析HTML格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:52:27