You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RMarkdown中将sjPlot交叉表整合输出到单个HTML文件

解决方案

直接修改你的RMarkdown代码即可实现所有交叉表输出到同一文件,修改后的完整可运行代码如下:

---
title: "testChi"
author: "g"
date: "10/15/2021"
output:
  html_document: default
  pdf_document: default
  word_document: default
---

```{r setup, include=FALSE, error=FALSE, warning=FALSE}
library(magrittr)
library(dplyr)
library(readr)
library(sjPlot)

cols <- mtcars %>% select(matches("mpg|cyl|disp")) %>% names(.)

create_plots <- function(dat,title_name) {
 for (i in cols) {
    plt <- sjPlot::tab_xtab(
      var.row =  dat$gear,
      var.col = dat[[i]],
      show.row.prc = TRUE,
      var.labels = c("gear size", i),
      title = title_name,
      # 新增参数:禁止弹出浏览器,返回HTML源码
      use.viewer = FALSE
    )
    # 直接输出HTML内容到编译流
    cat(plt$knitr)
    # 可选:每个表格之间加水平分隔线,区分更清晰
    cat("<hr style='border:1px solid #eee; margin:2rem 0;'/>")
  }
}
create_plots(mtcars, 'gear and stuff')
# 核心改动说明
- 给`sjPlot::tab_xtab`添加`use.viewer = FALSE`参数:关闭默认的独立浏览器页面弹出逻辑,函数会返回包含表格HTML源码的对象
- 循环内调用`cat(plt$knitr)`输出:将表格的HTML源码直接注入RMarkdown的编译流,配合代码块的`results = 'asis'`参数,即可直接渲染到最终文件中
- 移除了冗余的`pander`调用:不需要额外转换格式,sjPlot生成的HTML已经可直接渲染

编译为HTML格式即可得到所有表格放在同一页面、可滚动查看的效果,如需导出为PDF或Word,直接在YAML头部修改对应output格式即可正常编译。

---
内容的提问来源于stack exchange,提问作者NewBee
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:15:07