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

如何使用R语言formattable包为表格添加分类表头与列间黑线

formattable添加多层分类表头与列分隔线实现代码

你可以通过结合formattable和htmltools包来实现自定义顶层分类表头、分类间黑竖线分隔的需求,完整可运行代码如下:

library(formattable)
library(htmltools)
data(mtcars)
df <- mtcars

# 列分组配置:每组数值为对应分类包含的列数,总和需等于数据集总列数
col_groups <- list(
  "Category 1" = 3,  # 对应mpg、cyl、disp三列
  "Category 2" = 3,  # 对应hp、drat、wt三列
  "Category 3" = 2,  # 对应qsec、vs两列
  "Category 4" = 3   # 对应am、gear、carb三列
)

# 生成基础表格,给分类边界的普通列添加右侧黑竖线
base_table <- formattable(df,
  list(
    disp = formatter("span", style = ~ style("border-right" = "2px solid black")),
    wt = formatter("span", style = ~ style("border-right" = "2px solid black")),
    vs = formatter("span", style = ~ style("border-right" = "2px solid black"))
  )
)

# 转换为HTML标签对象修改表头结构
table_tags <- as.tags(base_table)

# 构造顶层分类表头,分类之间添加右侧黑竖线
top_header <- tags$tr(
  lapply(names(col_groups), function(cate_name) {
    colspan_val <- col_groups[[cate_name]]
    style_str <- ifelse(cate_name != names(col_groups)[length(col_groups)],
                        "border-right: 2px solid black; text-align: center; padding: 8px 0;",
                        "text-align: center; padding: 8px 0;")
    tags$th(colspan = colspan_val, style = style_str, cate_name)
  })
)

# 插入顶层表头到原有表头上方
table_tags$children[[1]]$children <- prepend(table_tags$children[[1]]$children, top_header)

# 渲染展示最终表格
browsable(table_tags)

如果需要调整每个分类包含的列数,只需修改col_groups列表中的数值,同时对应调整base_table里加边框的列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:09:04