如何根据字符串更改弹性表中的单元格文本颜色?

问题描述 投票:0回答:1

在 Flextable 中,如果检测到“+”(绿色)或“-”(红色),我会尝试更改单元格中文本的颜色。 帮助指南非常清楚如何对数字数据执行此操作,但它没有显示如何基于检测特定字符串来执行此操作。我已经包含了示例数据和代码,但它给出了这个错误

Error in rep(color, each = length(i)) : 
  attempt to replicate an object of type 'language'

这是示例代码:

library(flextable)
library(tidyverse)

sample_data <- tibble(
  age = c(20, 40, 30, 50),
  score = c("+5pp", "-4pp", "+7pp", "-10pp")
)

sample_data %>%
  flextable() %>%
  color(part = "body", 
        color = ~ case_when(
          str_detect(., "+") ~ "green",
          str_detect(., "-") ~ "red",
          TRUE ~ "black"  # Default color
        )
  )

我想要的输出是

age
列的文本保持黑色,标题也是如此。但是,我希望分数文本颜色根据分数是否有正负而改变(注意:并非所有我想要更改颜色的单元格都有数字,所以我不希望通过后门方式检查数字是否为如果可能的话,正/负)。

r stringr flextable
1个回答
0
投票

您可以添加两种颜色声明:

sample_data %>%
  flextable() %>%
  color(i = ~ grepl("\\+", score), j = "score", color = "green") %>%
  color(i = ~ grepl("-", score), j = "score", color = "red")        

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.