如何在R中使用kable将多列列名合并为单个列名?
解决R语言kableExtra合并列名(替换原列名)的问题
要实现将G、B、R、Y、P、C列名合并为单个「Colours」并替换原列名的效果,可通过修改原列名为空+添加跨列表头的方式实现,具体步骤如下:
步骤1:修改数据框列名
将需要合并的6列的原列名设置为空字符串,消除原列名的显示:
library(kableExtra) library(magrittr) library(knitr) We_Love_Colours <- data.frame( Name = c("Colours", "", ""), G = c("green","green","green"), B = c("blue", "blue", "blue"), R = c("red", "red", "red"), Y = c("yellow", "yellow", "yellow"), P = c("purple", "purple", "purple"), C = c("cyan", "cyan", "cyan") ) # 将G到C列的列名改为空字符串 colnames(We_Love_Colours)[2:7] <- ""
步骤2:生成带合并列名的表格
使用add_header_above设置跨6列的「Colours」表头,此时空的原列名会被新表头覆盖,视觉上完全替代原列名:
kable(We_Love_Colours, format = "html", escape = FALSE, row.names = FALSE, caption = "Table 1.0: Rainbow?") %>% add_header_above(c("Name" = 1, "Colours" = 6)) %>% kable_styling( bootstrap_options = c("striped"), full_width = FALSE, position = "center" )
原理说明
你之前的方法只是在原列名上方新增了一行表头,而通过先清空原列名再添加跨列表头,能让「Colours」成为这6列唯一的列标题,完美模拟Excel中合并单元格替换列名的效果。
内容的提问来源于stack exchange,提问作者MuradV
相关产品推荐
相关产品推荐

