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

在RMarkdown/Quarto中实现表格并排折叠与换行显示的方法问询

在RMarkdown/Quarto中实现表格并排折叠与长表格拆分换行(HTML输出)

一、实现表格并排折叠

要在HTML输出中实现表格并排+折叠,可以结合kableExtra生成表格,搭配htmltools和bslib的折叠组件完成布局。以下是实操示例:

首先加载所需包:

library(tibble)
library(kableExtra)
library(htmltools)
library(bslib)

基于你的示例数据拆分出两个子集,用于并排展示:

data <- tibble::tibble(
  date = seq.Date(from = as.Date("2022-01-01"), to = as.Date("2022-07-01"), by = "day"),
  temp = rnorm(length(date), mean = 35.5, sd = 0.3)
)

# 拆分为两个时间段的数据子集
data1 <- data[data$date <= as.Date("2022-03-31"), ]
data2 <- data[data$date > as.Date("2022-03-31"), ]

生成并排的可折叠表格:

# 创建带折叠功能的表格面板
panel1 <- accordion_panel(
  title = "2022年1-3月温度数据",
  kbl(data1, format = "html", digits = 1) %>%
    kable_styling(bootstrap_options = "striped", full_width = FALSE)
)

panel2 <- accordion_panel(
  title = "2022年4-7月温度数据",
  kbl(data2, format = "html", digits = 1) %>%
    kable_styling(bootstrap_options = "striped", full_width = FALSE)
)

# 用flex布局实现并排,自动适配屏幕宽度
div(
  style = "display: flex; gap: 20px; flex-wrap: wrap;",
  accordion(panel1, width = "48%"),
  accordion(panel2, width = "48%")
)

点击面板标题即可展开/折叠对应表格,布局会随屏幕宽度自动换行。

二、长表格按合适长度拆分换行

针对182行的时间序列数据,推荐两种拆分换行方案:

方案1:按固定行数拆分

将数据按指定行数拆分为多个子表格,依次输出实现换行:

library(dplyr)

# 按每30行拆分数据
split_data <- split(data, ceiling(seq_along(data$date)/30))

# 循环输出每个子表格
for(i in seq_along(split_data)){
  cat(paste0("### 第", i, "组数据\n"))
  print(
    kbl(split_data[[i]], format = "html", digits = 1) %>%
      kable_styling(bootstrap_options = "striped", full_width = TRUE)
  )
  cat("\n\n")
}

方案2:按月份分组拆分(贴合时间序列逻辑)

基于时间维度分组拆分,生成按月度划分的独立表格:

# 添加月份分组列
data <- data %>%
  mutate(month = format(date, "%Y-%m"))

# 按月份分组拆分数据
grouped_data <- group_split(data, month)

# 输出每个月份的表格
for(i in seq_along(grouped_data)){
  month_name <- unique(grouped_data[[i]]$month)
  cat(paste0("### ", month_name, " 温度数据\n"))
  print(
    kbl(grouped_data[[i]] %>% select(-month), format = "html", digits = 1) %>%
      kable_styling(bootstrap_options = "striped", full_width = TRUE)
  )
  cat("\n\n")
}

如果希望保留完整表格结构仅实现滚动查看,可使用scroll_box:

kbl(data, format = "html", digits = 1) %>%
  kable_styling(bootstrap_options = "striped") %>%
  scroll_box(width = "100%", height = "400px")

内容的提问来源于stack exchange,提问作者ryoto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:20:24