1

我试图找出是否有一种方法可以使用 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()

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

4

2 回答 2

3

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

在此处输入图像描述

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")
于 2021-03-17T16:41:12.170 回答
2

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)
                 })

在此处输入图像描述

于 2021-03-17T16:48:10.683 回答