如何在R Markdown中使用flextable包实现多个表格并排对齐
flextable 多表格并排对齐实现方案
前置依赖
先更新setup代码块加载所需辅助包:
knitr::opts_chunk$set(echo = TRUE) library(flextable) library(dplyr) library(htmltools) # 适配HTML输出 library(officer) # 适配Word输出
分场景实现代码
直接替换原有生成表格的代码块即可,无需修改R Markdown的头部输出配置:
# ---------------- HTML输出分支 ---------------- if (knitr::is_html_output()) { div( style = "display: flex; gap: 24px; align-items: flex-start; justify-content: center;", flextable(pressure[1:7,]) %>% set_caption(caption = "Table 1"), flextable(cars[1:5,]) %>% set_caption(caption = "Table 2") ) } # ---------------- Word输出分支 ---------------- if (knitr::is_word_output()) { ft1 <- flextable(pressure[1:7,]) %>% set_caption(caption = "Table 1") ft2 <- flextable(cars[1:5,]) %>% set_caption(caption = "Table 2") # 构建无外框的1行2列容器承载两个表格 officer::block_table( rows = 1, columns = 2, width = c(7, 7), # A4页面下总宽度不超过15cm,可按需调整 header = FALSE, style = "none" ) %>% officer::ph_with(value = ft1, loc = cell_rows(1) & cell_columns(1)) %>% officer::ph_with(value = ft2, loc = cell_rows(1) & cell_columns(2)) }
可调参数说明
- HTML场景下可修改
style内的参数:gap控制表格间距、justify-content控制整体居中/左对齐、align-items控制不同高度表格的纵向对齐方式 - Word场景下可修改
width参数的两个数值,适配不同页面大小、边距的要求
注意事项
- 两个表格会完整保留各自原有样式、标题
- 方案同时兼容
html_document和word_document两种输出格式,无需切换代码
内容的提问来源于stack exchange,提问作者MsGISRocker
相关产品推荐
相关产品推荐

