如何使用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
相关产品推荐
相关产品推荐

