Quarto中kables()输出多表格横向合并,求垂直排列解决方案
解决Quarto中knitr多表格横向合并的问题
方法1:逐个输出表格并添加Markdown换行
放弃使用knitr::kables(),直接逐个生成表格,每个表格后用cat("\n\n")添加Markdown换行(Quarto会识别为段落分隔,强制表格垂直排列):
library(knitr) library(kableExtra) # 第一个表格 mtcars[1:5, 1:3] %>% kable(caption = "第一组数据") %>% kable_styling() # 添加换行分隔 cat("\n\n") # 第二个表格 iris[1:5, 1:4] %>% kable(caption = "第二组数据") %>% kable_styling()
方法2:修改kables()输出的表格样式
如果一定要用knitr::kables(),可以给每个表格添加CSS块级样式,强制它们垂直排列:
library(knitr) # 给每个表格设置块级显示+底部边距 tbl1 <- kable(mtcars[1:5,1:3], table.attr = 'style="display:block; margin-bottom: 2em;"', caption = "第一组数据") tbl2 <- kable(iris[1:5,1:4], table.attr = 'style="display:block; margin-bottom: 2em;"', caption = "第二组数据") # 用kables()组合输出 kables(list(tbl1, tbl2))
方法3:批量处理多表格(适合大量表格场景)
如果需要输出多个表格,用purrr::walk()批量迭代,自动添加换行:
library(knitr) library(purrr) library(kableExtra) # 构造表格列表 table_list <- list( mtcars[1:5,1:3], iris[1:5,1:4], mtcars[6:10,1:3] ) # 批量输出,每个表格后添加换行 walk(table_list, function(tbl) { print(kable(tbl) %>% kable_styling()) cat("\n\n") })
为什么<br><br>无效?
Quarto渲染时,表格默认是**行内块(inline-block)**或浮动元素,HTML换行标签<br>只能添加行内换行,无法触发块级元素的垂直分隔。而Markdown的\n\n会生成<p>标签,创建足够的垂直空间,强制表格上下排列。
内容的提问来源于stack exchange,提问作者Joshua
相关产品推荐
相关产品推荐

