gt table 中单元格内文本的条件字体颜色

Conditional font color for text within a cell in a gt table

我正在尝试找出是否有一种方法可以使用 R 中的 Gt 包为单元格内的特定文本着色。我没有可重现的示例,因为我没有找到任何教程或示例这样做。

library(tidyverse)
library(gt)

type <- c("A", "B")
track <- c("G-P-L-H-H", "G-H-P-L-G")

table <- tibble(type, track) %>% gt()

对于上面的table,我希望轨道栏的字体颜色为G = 红色、H = 蓝色、L = 绿色和P = 黄色。有没有办法做到这一点?这是我正在使用的真实 table 的一个小代表,它将有更多的行与字母的随机组合。

这是否达到了您的要求?例如,我将 html 标签内的“G”替换为 G,其样式对应于所需的颜色。

table <- tibble(type, track) %>%
  mutate(
    track = track %>%
      str_replace_all("G", '<a style="color:red">G</a>') %>%
      str_replace_all("H", '<a style="color:blue">H</a>') %>%
      str_replace_all("L", '<a style="color:green">L</a>') %>%
      str_replace_all("P", '<a style="color:yellow">P</a>')
    ) %>%
  gt() %>%
  fmt_markdown(columns = "track")

gt 包有一个函数 text_transform() 用于此目的:

library(tidyverse)
library(gt)

type <- c("A", "B")
track <- c("G-P-L-H-H", "G-H-P-L-G")

tibble(type, track) %>% 
  gt() %>% 
  text_transform(locations = cells_body(vars(track)), 
                 fn = function(x) {
                   x <- gsub("G", "<span style=\"color: red;\">G</span>", x)
                   x <- gsub("H", "<span style=\"color: blue;\">H</span>", x)
                   x <- gsub("L", "<span style=\"color: green;\">L</span>", x)
                   x <- gsub("P", "<span style=\"color: yellow;\">P</span>", x)
                 })