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