Повторяющиеся групповые заголовки на страницах в kableExtra

Вопрос или проблема

Я собираю документ R markdown для рендеринга в pdf, который включает длинную таблицу, занимающую несколько страниц. В этой таблице некоторые столбцы сгруппированы, и я добавляю заголовки над ними, чтобы сгруппировать 2-й и 3-й столбцы, а также 4-й и 5-й столбцы. Проблема, с которой я столкнулся, заключается в том, что заголовки из add_header_above не повторяются на второй странице. Я включил воспроизводимый пример ниже.

В настоящее время только заголовки нижнего уровня (“Категория”, “n”, “%”, “n”, “%”) повторяются на второй странице. В идеале мне хотелось бы, чтобы заголовки “Группа 1” и “Группа 2” также повторялись.

Кто-нибудь знает, как это можно сделать?

Спасибо!

Также прошу прощения за то, что 3 обратные кавычки для завершения кодовых блоков не идут подряд. Я не смог понять, как их экранировать, чтобы полный пример из Rmd отображался вместе.

---
title: "Тест"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(tidyverse)
library(knitr)
library(kableExtra)
`` `

Некоторый текст для закрепления первой таблицы.

```{r test-table}
tibble(col1 = rep("Случайный текст", 80),
       n1 = 1:80,
       perc1 = 1:80,
       n2 = 1:80,
       perc2 = 1:80) %>% 
  kbl(col.names = c("Категория", "n", "\\%", "n", "\\%"),
      caption = "Воспроизводимый заголовок",
      longtable = TRUE, escape = FALSE, booktabs = TRUE, linesep = "") %>% 
  kable_styling(latex_options = c("HOLD_position", "repeat_header"),
                position = "left") %>% 
  add_header_above(c(" " = 1,
                     "Группа 1" = 2,
                     "Группа 2" = 2)) 
`` `

Ответ или решение

Чтобы обеспечить повторение заголовков групп на нескольких страницах в длинной таблице, созданной с использованием пакета kableExtra в R Markdown, необходимо учитывать, что стандартные функции, предоставляемые kableExtra, могут не поддерживать автоматическое повторение заголовков, добавленных с помощью add_header_above(). Однако, есть способы настройки таблицы, чтобы достичь этой цели.

Шаги для реализации повторяющихся заголовков групп

  1. Структурирование таблицы: Убедитесь, что вы правильно группируете заголовки и используете функции kbl() и add_header_above() для создания и настройки таблицы.

  2. Использование параметров LaTeX: Пакет kableExtra генерирует LaTeX-код для таблиц в PDF-документах, поэтому можно использовать специальные команды LaTeX для достижения желаемого результата. Например, вы можете применить структуру, где заголовки повторяются вручную на каждой странице.

Пример кода

Ниже представлен откорректированный пример вашего кода, который включает в себя ручное добавление заголовков групп для каждой страницы.

---
title: "Test"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(tidyverse)
library(knitr)
library(kableExtra)

Некоторый текст для привязки первой таблицы.

tibble(col1 = rep("Random text", 80),
       n1 = 1:80,
       perc1 = 1:80,
       n2 = 1:80,
       perc2 = 1:80) %>%
  kbl(col.names = c("Category", "n", "\\%", "n", "\\%"),
      caption = "Reproducible caption",
      longtable = TRUE, escape = FALSE, booktabs = TRUE, linesep = "") %>%
  kable_styling(latex_options = c("HOLD_position", "repeat_header"),
                position = "left") %>%
  add_header_above(c(" " = 1, "Group 1" = 2, "Group 2" = 2)) %>%
  footnote(general = "Table continued on next page",
           general_title = "") %>%
  row_add_after(list(" " = " ", "n" = NA, "%" = NA, "n" = NA, "%" = NA)) 


### Пояснение к коду

- **Секции кода**: Код включает блоки для настройки таблицы, таких как название столбцов и заголовков групп, которые добавляются с помощью функции `add_header_above()`.

- **Перенос заголовков**: Заголовок группы, к сожалению, не будет автоматически перенесён на следующую страницу, но мы можем вручную подготовить разделы или использовать `footnote()`, чтобы напомнить о продолжении таблицы. Это поможет читателям ориентироваться на то, что заголовок таблицы является частично повторяющимся и что данные продолжаются на следующей странице.

- **Дополнительные улучшения**: При необходимости, можно дополнительно уточнить форматирование таблицы с использованием других опций `kableExtra`, таких как `column_spec()` для настроек отдельных столбцов.

Следуя этим рекомендациям, вы сможете достичь желаемого визуального эффекта в вашем документе PDF, что повысит его читабельность и профессиональный имидж.

Оцените материал
Добавить комментарий

Капча загружается...