首页 > 解决方案 > KableExtra 在折叠行中使用 row_spec

问题描述

我有一个数据集,其设置类似于以下 mtcars 摘要:

mtcarssumm <- mtcars %>%
  group_by(cyl, gear) %>% 
  summarise(meanMPG = mean(mpg)) %>% 
  mutate(gear=as.character(gear)) %>% 
  bind_rows(group_by(mtcars,cyl) %>% 
  summarise(meanMPG=mean(mpg)) %>% 
  mutate(gear='Total')) %>% 
  arrange(cyl)

cyl gear  meanMPG
   <dbl> <chr>   <dbl>
 1     4 3        21.5
 2     4 4        26.9
 3     4 5        28.2
 4     4 Total    26.7
 5     6 3        19.8
 6     6 4        19.8
 7     6 5        19.7
 8     6 Total    19.7
 9     8 3        15.0
10     8 5        15.4
11     8 Total    15.1

我想要的是使用 kableextra 创建一个表,其中带有 gear = Total 的行被着色。我目前正在使用 row_spec 来执行此操作。我还使用 collapse_rows 来折叠 cyl 中的重复值:

mtcarssumm %>%
  kbl(booktabs = TRUE) %>% 
  collapse_rows(1, latex_hline = "major", valign = "middle") %>% 
  kable_styling() %>% 
  row_spec(which(mtcarssumm$gear == "Total"), background = "#e5e5e5")

当我转换为 PDF 时,整行都带有阴影,如下图所示。

在此处输入图像描述

有没有办法使用 collapse_rows 和 row_spec 以便阴影只在未折叠的行中?(注意,此代码在 HTML 输出中给出了所需的结果,但在 PDF 输出中没有。

谢谢!

标签: r-markdownkablekableextra

解决方案


我想出了一个解决办法 - 我改变了第一列的背景(折叠的)

mtcarssumm %>% 
  kbl(booktabs = TRUE) %>% 
  collapse_rows(1,latex_hline = "major", valign = "middle") %>% 
  kable_styling() %>% 
  row_spec(which(mtcarssumm$gear == "Total"), background = "#e5e5e5") %>%
  column_spec(1, background = "white")

在此处输入图像描述


推荐阅读