我正在用 R Markdown 中的
kableExtra
包将表格编织成 PDF,我想知道是否有人有解决方案来确保列标题(黑色)、列组标题(黑色)和包的背景颜色行(红色)填充整个单元格。如下图所示,各个单元格仅被部分填充,看起来有点傻。
示例代码:
---
title: "Test Doc"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE,
dev = "cairo_pdf"
)
```
```{r}
library(tidyverse)
library(kableExtra)
```
```{r}
set.seed(1)
df <- data.frame(
id = LETTERS[1:10],
var1 = rnorm(10, 50, 10),
var2 = rnorm(10, 50, 10),
var3 = rnorm(10, 50, 10),
var4 = rnorm(10, 50, 10),
var5 = rnorm(10, 50, 10),
var6 = rnorm(10, 50, 10),
grp = rep(paste("Group", 1:2), each = 5)
)
```
```{r}
kbl(df[1:7],
booktabs = TRUE,
escape = FALSE,
align = c("l", rep("c", ncol(df) - 1))) %>%
kable_styling(latex_options = c("HOLD_position"),
font_size = 8) %>%
add_header_above(c(" " = 1, "colgroup1" = 3, "colgroup2" = 3), background = "black",
color = "white", bold = TRUE) %>%
row_spec(row = 0, background = "black", color = "white", bold = TRUE) %>%
pack_rows(index = table(fct_inorder(df$grp)), background = "#ED1B2F",
color = "white", bold = TRUE, extra_latex_after = "\\midrule{}")
```
此方法消除了行之间的间距,从而消除了空格。
尝试:
a) 删除
booktabs
参数:这会强制每 5 行增加额外的行间距。linesep = ""
,这样就没有线条分隔,然后pack_rows
时删除分组行 extra_latex_after = ""
之后的空格。
```{r}
kbl(df[1:7],
# booktabs = TRUE,
escape = FALSE,
align = c("l", rep("c", ncol(df) - 1)),
linesep = "") |>
kable_styling(latex_options = c("HOLD_position"),
font_size = 8) |>
add_header_above(c(" " = 1, "colgroup1" = 3, "colgroup2" = 3),
background = "black",
color = "white",
bold = TRUE) |>
row_spec(row = 0,
background = "black",
color = "white",
bold = TRUE) |>
pack_rows(index = table(fct_inorder(df$grp)), background = "#ED1B2F",
color = "white",
bold = TRUE,
extra_latex_after = "")
```
结果: