将gtsummary表格转LaTeX后在R Markdown内联调用报错求助
解决R Markdown中gtsummary表格内联LaTeX调用失败的问题
问题根源
你通过as_gt() %>% as_latex()生成的是带完整LaTeX表格环境的代码(包含\begin{table}、\end{table}及minipage结构),直接用r latex_code内联插入时,会和R Markdown自身的LaTeX排版逻辑冲突,触发括号不匹配的语法错误。
修复方法
方法1:直接在代码块输出表格(推荐)
gtsummary原生支持R Markdown渲染,无需手动转LaTeX。将代码放在带results='asis'参数的R代码块中即可:
{r, results='asis'} library(gtsummary) # 筛选数据集并生成对比表格 comp <- mtcars %>% select(mpg, cyl, disp) comp %>% tbl_summary(by = cyl) %>% as_latex()
方法2:提取纯表格LaTeX代码(适合内联调用)
如果必须存变量内联,跳过gt转换步骤,直接用gtsummary自带的as_latex(),提取不含外层table环境的核心表格代码:
library(gtsummary) comp <- mtcars %>% select(mpg, cyl, disp) # 生成gtsummary的LaTeX对象 gt_latex <- comp %>% tbl_summary(by = cyl) %>% as_latex() # 提取仅表格内容(去掉外层环境标签) latex_code <- gt_latex$content
之后在R Markdown中直接内联调用:r latex_code
方法3:用kable转成简洁LaTeX代码
如果不需要gtsummary的复杂格式,也可以转成kable格式:
library(gtsummary) library(knitr) comp <- mtcars %>% select(mpg, cyl, disp) latex_code <- comp %>% tbl_summary(by = cyl) %>% as_kable(format = "latex")
同样通过r latex_code内联插入即可。
内容的提问来源于stack exchange,提问作者R Walser
相关产品推荐
相关产品推荐

