如何用kableExtra为表格特定文本值设置颜色
基于文本内容为kable表格设置单元格颜色
我想要在表格的部分单元格中修改文本颜色或设置背景色:将“Positive”设为绿色,“Negative”设为红色,“Neutral”保持黑色。我曾查找解决方案,但仅找到基于数字的条件格式方法,请问如何根据单元格文本内容设置颜色?
用户提供的原始代码:
`Date` <- c("24-02-2022", "04-04-2022", "01-04-2022", "18-05-2022", "28-02-2022", "04-03-2022", "05-03-2022", "08-03-2022", "05-05-2022", "12-05-2022", "25-05-2022") `Predicted reaction` <- c("Negative", "Negative", "Negative", "Neutral", "Negative", "Positive", "Positive", "Negative", "Positive", "Negative", "Neutral") df3 <- data_frame(`Date`, `Predicted reaction`) df3 %>% kbl(caption = "Timeline of Events") %>% kable_classic(full_width = F, html_font = "Cambria")%>% pack_rows("All", 1, 4) %>% pack_rows("Spesific", 5, 11)
解决方案
可以用kableExtra包的cell_spec()函数,针对文本内容直接设置样式,具体实现如下:
修改后的完整代码
library(dplyr) library(kableExtra) `Date` <- c("24-02-2022", "04-04-2022", "01-04-2022", "18-05-2022", "28-02-2022", "04-03-2022", "05-03-2022", "08-03-2022", "05-05-2022", "12-05-2022", "25-05-2022") `Predicted reaction` <- c("Negative", "Negative", "Negative", "Neutral", "Negative", "Positive", "Positive", "Negative", "Positive", "Negative", "Neutral") df3 <- data_frame(`Date`, `Predicted reaction`) %>% mutate(`Predicted reaction` = case_when( `Predicted reaction` == "Positive" ~ cell_spec(`Predicted reaction`, color = "green"), `Predicted reaction` == "Negative" ~ cell_spec(`Predicted reaction`, color = "red"), TRUE ~ `Predicted reaction` )) df3 %>% kbl(caption = "事件时间线", escape = FALSE) %>% kable_classic(full_width = F, html_font = "Cambria") %>% pack_rows("全部", 1, 4) %>% pack_rows("特定", 5, 11)
关键说明
cell_spec():用来给单元格内容添加CSS样式,这里用color参数指定文本颜色,如果需要设置背景色,可额外添加background参数(比如background = "#e6f9e6")case_when():按文本值匹配对应的样式规则,逻辑清晰易扩展kbl(escape = FALSE):必须开启这个参数,否则生成的HTML样式代码会被转义成纯文本,无法生效
内容的提问来源于stack exchange,提问作者tonjekm
相关产品推荐
相关产品推荐

