如何在flextable中将低于阈值的所有单元格设为粗体
解决方案
要批量将所有列中低于指定值(如0)的数值设置为粗体,你可以直接沿用修改字体颜色的思路,给bold()函数传入判断函数,自动对所有列生效:
library(flextable) library(tidyverse) set.seed(0) df <- data.frame(a = runif(10, -20, 20), b = runif(10, -20, 20), c = runif(10, -20, 20)) # 批量为所有列中小于0的数值设置粗体 ft <- df %>% flextable() %>% bold(bold = function(x) { x < 0 # 对每个列的元素判断,返回是否需要加粗的逻辑向量 }) # 预览表格 ft
原理说明
bold()函数的bold参数支持传入自定义函数:
- 该函数会依次应用到表格的每一列,接收当前列的数值向量作为输入
- 返回与输入等长的逻辑向量,
TRUE对应的单元格会被设置为粗体 - 无需手动指定列名或循环遍历,自动覆盖所有列
如果需要仅对部分列生效,只需添加cols参数指定目标列即可,例如:
# 仅对a、b列设置粗体 ft <- df %>% flextable() %>% bold(bold = function(x) x < 0, cols = c("a", "b"))
内容的提问来源于stack exchange,提问作者salomon
相关产品推荐
相关产品推荐

