Flextable设置:将显著性星号加粗并去除其与系数的间距
实现方案
可通过两种方法实现显著性星号加粗且紧贴系数的需求:
方法1:原生flextable富文本实现
不需要额外依赖ftExtra,直接通过flextable自带的富文本构造函数处理:
library(huxtable) library(flextable) library(stringr) # 生成基础回归表 ft <- lm(formula = mpg ~ cyl + hp, mtcars) %>% huxreg() %>% as_flextable() # 批量处理系数列 ft <- ft %>% # 先删除系数和星号之间的空格,这里i对应系数行的范围、j对应模型系数列的范围,可根据实际表结构调整 modify_at( .i = 3:5, .j = 2, .f = \(x) str_replace_all(x, "(\\d)\\s+(\\*+)", "\\1\\2") ) %>% # 拆分内容,将星号部分设置为加粗 mk_par( .i = 3:5, .j = 2, value = as_paragraph( str_extract(.x, "^-?\\d*\\.?\\d+"), as_b(str_extract(.x, "\\*+$")) ) ) # 输出结果 ft
方法2:配合ftExtra的markdown渲染实现
代码更简洁,适合多列批量处理的场景:
library(huxtable) library(flextable) library(ftExtra) library(stringr) ft <- lm(formula = mpg ~ cyl + hp, mtcars) %>% huxreg() %>% as_flextable() %>% # 匹配所有带星号的系数单元格,删除空格同时给星号套markdown加粗标记 modify_at( .i = ~ str_detect(.x, "\\*"), .j = 2, .f = \(x) str_replace_all(x, "(\\d)\\s+(\\*+)", "\\1**\\2**") ) %>% # 对系数列启用markdown渲染 colformat_md(j = 2) ft
如果你的回归表包含多个模型列,只需调整上述代码中的j参数为所有模型列的序号即可,若系数行数量有变化,同步调整i参数的范围即可。
内容的提问来源于stack exchange,提问作者astrae_research
相关产品推荐
相关产品推荐

