当使用pack_rows()和索引时,如何调整kableExtra表格分组标题的字体大小和对齐方式?

rseugnpd  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(118)

我正在使用R Markdown制作自动报告,我的用户希望他们表格中的组标题居中,并且看起来比文本的其余部分大。具体来说,在下面的表格输出中,我希望使Species更大并居中。

library(kableExtra)

kable(iris,escape = F)%>%
  pack_rows(index = table(fct_inorder(iris$Species)))%>%
  kable_styling(bootstrap_options = "striped", full_width = T, position = 'center')%>%
  row_spec(which(iris$Sepal.Length < 5), bold = T, background = "red")

字符串
我尝试在pack_rows()中插入格式选项,但据我所知,这不是pack_rows()的工作方式。因为这是针对行而不是列,所以适用于add_header_above()的选项在这里不起作用。另外,它不是硬编码的标题名称,也不能。
提前感谢!!

unguejic

unguejic1#

这里有几个可能的解决方案,分别针对html和pdf。

html版本

html版本第一,因为这似乎是你正在使用的方法:

---
output: html_document
---

```{r packages, warning=FALSE, message=FALSE}

library(kableExtra)
library(forcats)
library(dplyr)

iris1 <-
  iris |> 
  group_by(Species) |> 
  slice_head(n = 5)
  
kable(iris1[,-5],
      format = "html")|>
  kable_styling(bootstrap_options = "striped", 
                full_width = TRUE, 
                position = 'center') |> 
  row_spec(which(iris1$Sepal.Length < 5), 
           bold = TRUE,
           background = "red") |>
  pack_rows(index = table(fct_inorder(iris1$Species)),
            label_row_css = "font-size: 30px; text-align: center;")
字符串
html输出(放大字体大小以获得效果):

![](https://i.stack.imgur.com/TlFg7.png)
的数据

## pdf版本

这需要将组标题预先格式化为具有选定字体大小的LaTeX。我刚刚使用了具有相对字体大小的典型LaTeX方法。可以使用其他LaTeX包添加精确的大小。

output: pdf_document


library(kableExtra)
library(forcats)
library(dplyr)

iris1 <-
  iris |> 
  group_by(Species) |> 
  slice_head(n = 5) |> 
  mutate(Species = paste0(paste("\\\\begin{LARGE}", Species, "\\\\end{LARGE}")))
  
kable(iris1[,-5],
      format = "latex",
      booktabs = TRUE)|>
  row_spec(which(iris1$Sepal.Length < 5), 
           bold = TRUE,
           background = "red") |>
  pack_rows(index = table(fct_inorder(iris1$Species)),
            latex_align = "c",
            escape = FALSE)
型
pdf输出:

![](https://i.stack.imgur.com/Dj53s.png)
的

相关问题