如何让gtsummary的TXT输出媲美RTF?解决huxtable导出两类问题
解决gtsummary导出TXT格式的常见问题及优化方案
一、搞定huxtable导出的冗余列和居中问题
- 删掉冗余列:先在gtsummary对象层面筛选掉不需要的列,比如label、stat_0这类,不用等转成huxtable再处理。示例代码:
再转成huxtable对象:# 假设你的gtsummary表格存在tbl变量里 tbl_cleaned <- tbl %>% select(-c(label, stat_0))hux_tbl <- as_hux(tbl_cleaned) - 取消居中对齐:huxtable默认可能把内容居中,直接用
set_align()改成左对齐(或者你需要的对齐方式):
最后导出:hux_tbl <- hux_tbl %>% set_align(everywhere, "left")quick_txt(hux_tbl, file = "clean_output.txt")
二、找回消失的上下标
TXT本身不支持原生上下标格式,只能用ASCII符号模拟。提前在gtsummary里把HTML格式的上下标替换成^(上标)和_(下标),导出后就能在TXT里看到标识:
# 替换标签里的上下标为ASCII符号 tbl <- tbl %>% modify_header(all_stat_cols() ~ gsub("<sup>(.*?)</sup>", "^\\1", label)) %>% modify_header(all_stat_cols() ~ gsub("<sub>(.*?)</sub>", "_\\1", label))
处理完再用huxtable导出,TXT里就会显示类似X^2或H_2O的格式。
三、更接近RTF效果的TXT导出方案
如果想让TXT表格更规整,试试这两种方法:
方法1:用flextable导出
flextable对表格结构的保留比huxtable更好,导出的TXT格式更接近RTF的规整度,步骤很简单:
library(flextable) # 把gtsummary转成flextable ft <- as_flextable(tbl) # 导出为TXT save_as_txt(ft, path = "fancy_output.txt")
还能通过flextable的align()、border()等函数调整样式,让表格更美观。
方法2:用gt包转markdown再存TXT
先把gtsummary转成gt对象,再导出成markdown格式的文本,这样能保留更多格式细节:
library(gt) # 转换为gt对象 gt_tbl <- as_gt(tbl) # 导出为纯文本文件 gt_tbl %>% as_raw_markdown() %>% writeLines("gt_output.txt")
提前把上下标改成markdown的^和_语法,导出后的TXT格式会更清晰。
内容的提问来源于stack exchange,提问作者xiecheng gu
相关产品推荐
相关产品推荐

