使用kableExtra生成HTML表格时无法合并重复行的解决方法求助
解决kableExtra合并重复单元格失效的问题
使用kableExtra生成HTML格式表格时,第一列存在重复单元格,调用collapse_rows()方法无法实现合并,具体场景如下:
数据示例
df <- data.frame( Vegitation = c("Tree", "Tree", "Tree" , "Fruit", "Fruit", "Water"), Non_sense_var1 = c(17,14,1,20,21,0), Non_sense_var2 = c(15,1,11,2,2.1,60), Non_sense_var3 = c(4,6,14,2,7,7) )
原表格代码
header_line <- c("Vegitation", "Value 1", "Value 2", "Value 3") kbl(df, escape = F, align = 'lcccc')%>% add_header_above( header_line, bold = T, line = F, font_size = 11) %>% kable_styling(full_width = T, font_size = 10, html_font = 'arial') %>% kable_classic() %>% column_spec(1, width = "2.2cm", bold = TRUE ) %>% column_spec(2, width = "2.2cm") %>% column_spec(c(3:4), width = "2.2cm", color = '#FF7F0E') %>% collapse_rows(1, valign = "top")
运行上述代码后,第一列的重复值(如"Tree""Fruit")并未合并,仍逐行显示重复内容。
已知背景
截至2022年9月27日,kableExtra在该场景下的合并行功能存在问题,暂无官方正式修复方案。
可行解决方向
- 安装开发版修复:从GitHub安装kableExtra的开发版本,可能修复该问题,但可能破坏表格其他格式,执行命令:
devtools::install_github("haozhu233/kableExtra")
- 更换其他包实现:使用gt包替代kableExtra,可轻松实现重复单元格合并,示例代码如下:
library(gt) df %>% gt() %>% cols_label( Vegitation = "Vegitation", Non_sense_var1 = "Value 1", Non_sense_var2 = "Value 2", Non_sense_var3 = "Value 3" ) %>% tab_style( style = list(cell_text(weight = "bold")), locations = cells_column_labels("Vegitation") ) %>% tab_style( style = cell_text(color = "#FF7F0E"), locations = cells_body(columns = c(Non_sense_var2, Non_sense_var3)) ) %>% cols_width(everything() ~ px(85)) %>% opt_table_font(font = list("arial")) %>% tab_options( table.width = pct(100), table.font.size = 10, heading.font.size = 11 ) %>% row_group_by(Vegitation) %>% tab_options(row_group.as_column = TRUE)
内容的提问来源于stack exchange,提问作者Alokin
相关产品推荐
相关产品推荐

