RMarkdown中如何将data.frame每列最大值设置为粗体显示
RMarkdown表格每列最大值加粗实现方案
你可以借助kableExtra的cell_spec函数提前对数据框内容做格式标记,渲染表格时关闭内容转义即可实现需求,完整可运行代码如下:
# 加载依赖包 library(dplyr) library(knitr) library(kableExtra) # 构造示例数据 data <- data.frame(A=c(1,2,4,3), B=c(8,7,9,10), C=c(14,12,13,11), D=c(15,18,17,16)) rownames(data) <- c("E", "F", "G", "H") # 遍历所有列,给最大值添加粗体格式标记 data_formatted <- data %>% mutate(across(everything(), ~ifelse(.x == max(.x), cell_spec(.x, bold = TRUE), .x))) # 渲染表格,注意必须设置escape = FALSE才能正常解析格式标记 kable(data_formatted, escape = FALSE) %>% kable_styling( full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), ) %>% add_header_above(c( '', Group1 = 2, Group2 = 2))
注意事项
- 如果你只需要处理指定列,把
across(everything())里的everything()换成对应列名的向量即可,比如c(A,B,D) - 如果某列存在多个相同最大值,上述代码会将所有最大值都加粗,如果你只需要标记第一个最大值,可以将判断条件改为
ifelse(.x == max(.x) & cumsum(.x == max(.x)) == 1, cell_spec(.x, bold = TRUE), .x) - 该方案同时兼容HTML和PDF格式的RMarkdown输出,无需额外适配。
内容的提问来源于stack exchange,提问作者Melih Aras
相关产品推荐
相关产品推荐

