如何在RMarkdown中用kable为表格各列最值添加颜色?
为kable表格的列最大值/最小值添加颜色标记
解决方案
要给每列的最大值(红色)和最小值添加颜色标记,你可以借助kableExtra包的cell_spec()函数,先对数据框的数值列进行样式处理,再生成表格。以下是修改后的完整代码:
library(kableExtra) library(dplyr) # 需dplyr支持across和case_when语法 # 预处理数据:为数值列的最大值、最小值添加样式 taula_decils_CNAE_styled <- taula_decils_CNAE %>% mutate( across(2:11, ~cell_spec( ., # 设置颜色:最大值红色,最小值绿色,其余默认黑色 color = case_when( . == max(., na.rm = TRUE) ~ "red", . == min(., na.rm = TRUE) ~ "green", TRUE ~ "black" ), # 为最大/最小值添加加粗效果(可选) bold = case_when( . == max(., na.rm = TRUE) | . == min(., na.rm = TRUE) ~ TRUE, TRUE ~ FALSE ) )) ) # 生成带样式的表格 kable(taula_decils_CNAE_styled, booktabs=TRUE, digits=2, format.args = list(big.mark="."), col.names=c("Grups de despesa", "1r decil", "2n decil", "3r decil", "4t decil", "5è decil", "6è decil", "7è decil", "8è decil", "9è decil", "10è decil"), linesep = "" , caption="Pes (%) de cada grup de despesa sobre la despesa monetària, per decils de renda", escape = FALSE) %>% # 必须设置为FALSE,否则样式代码会被转义无法生效 kable_styling(latex_options=c("HOLD_position","scale_down"), bootstrap_options = c("condensed"), position="center") %>% column_spec(1, width="4cm") %>% column_spec(2:11, width="2cm") %>% row_spec(0, bold = T)
关键说明
across(2:11):遍历表格中第2到第11列的数值列(第1列为分类列,无需处理)cell_spec():为单元格生成样式代码,支持颜色、加粗等格式自定义escape = FALSE:必填参数,否则kable会把样式代码当成普通文本输出,无法渲染出颜色效果- 颜色可自由调整:把
"red"和"green"换成你需要的颜色名称或十六进制颜色码即可
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

