【问题标题】:Conditional font color for text within a cell in a gt tablegt 表中单元格内文本的条件字体颜色
【发布时间】:2021-03-18 00:53:55
【问题描述】:

我正在尝试找出是否有一种方法可以使用 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 = 黄色的字体颜色。有没有办法做到这一点?这是我正在使用的真实表格的一个小表示,它将有更多的随机字母组合的行。

【问题讨论】:

    标签: r tidyverse gt


    【解决方案1】:

    这能满足您的需要吗?例如,我将 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")
    

    【讨论】:

    • 我最终实现了这个解决方案。谢谢
    【解决方案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)
                     })
    

    【讨论】:

    • 我选择了另一种解决方案,但这也是一个有效的解决方案。谢谢。
    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 2018-08-23
    • 2022-01-10
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多