рекомендации

среда, 9 декабря 2020 г.

Создание красивых HTML-таблиц с помощью knitr::kable и kableExtra


Введение

Цель kableExtra - помочь вам создавать сложные таблицы и управлять стилями таблиц. Она импортирует символ pipe%>% из magrittr и озвучивает все функции, так что в основном вы можете добавлять «слои» к выходу kable способом, аналогичным ggplot2 и plotly.

Чтобы узнать, как создавать сложные таблицы в LaTeX, перейдите:


Установка

install.packages("kableExtra")

# For dev version
# install.packages("devtools")
devtools::install_github("haozhu233/kableExtra")

Начало работы

Здесь мы используем первые несколько столбцов и строк из набора данных mtcars.

library(kableExtra)
dt <- mtcars[1:5, 1:6]

Когда вы используете kable(), если вы не укажете формат, по умолчанию он будет генерировать таблицу markdown и позволить pandoc обрабатывать преобразование из markdown в HTML/PDF. Это наиболее удобный подход для визуализации самых простых таблиц, поскольку он не зависит от формата. Если вы переключитесь с HTML на pdf, вам практически не нужно ничего менять в коде. Однако markdown не поддерживает сложные таблицы. Например, если вы хотите иметь заголовок таблицы с двумя строками, markdown просто не сможет предоставить вам необходимую функциональность. В результате, когда у вас есть такая необходимость, вы должны определить формат в kable () как «html» или «latex». Вы также можете определить глобальный параметр в начале с помощью параметров (knitr.table.format = "html"), чтобы не повторять этот шаг каждый раз.

Начиная с kableExtra 0.9.0, когда вы загружаете этот пакет (library (kableExtra)), он автоматически устанавливает глобальную опцию «knitr.table.format» в зависимости от вашей текущей среды. Если вы не визуализируете PDF-файл, kableExtra попытается отобразить для вас HTML-таблицу. Вам больше не нужно вручную устанавливать глобальный параметр или параметр format для каждой функции kable(). Я все еще включаю объяснение выше в эту виньетку, чтобы вы могли понять, что происходит за кулисами. Обратите внимание, что это только глобальный вариант. Вы можете вручную установить любой формат в kable(), когда захотите. 

Вы можете отключить это поведение, установив параметры (kableExtra.auto_format = FALSE) перед загрузкой kableExtra.

# Если вы используете kableExtra <0.9.0, вам рекомендуется сначала установить глобальную опцию.
# options(knitr.table.format = "html") 
## Если вы здесь не определяете формат, вам нужно будет поместить `format =" html "` в каждую функцию kable.

Базовая таблица HTML

Базовый HTML-вывод kable выглядит очень грубо. В конце концов, это обычная HTML-таблица без всякой любви к CSS.

kable(dt, "pipe")

|                  |  mpg| cyl| disp|  hp| drat|    wt|
|:-----------------|----:|---:|----:|---:|----:|-----:|
|Mazda RX4         | 21.0|   6|  160| 110| 3.90| 2.620|
|Mazda RX4 Wag     | 21.0|   6|  160| 110| 3.90| 2.875|
|Datsun 710        | 22.8|   4|  108|  93| 3.85| 2.320|
|Hornet 4 Drive    | 21.4|   6|  258| 110| 3.08| 3.215|
|Hornet Sportabout | 18.7|   8|  360| 175| 3.15| 3.440|

Применение тем

При использовании в таблице HTML kable_styling() автоматически применит к таблице тему twitter bootstrap. Теперь она должна выглядеть так же, как исходный вывод pandoc (тот, где вы не указываете format в kable()), но на этот раз вы управляете им.

dt %>%
  kable() %>%
  kable_styling()

                     mpg   cyl   disp    hp   drat      wt
------------------  -----  ----  -----  ----  -----  ------
Mazda RX4            21.0     6    160   110   3.90   2.620
Mazda RX4 Wag        21.0     6    160   110   3.90   2.875
Datsun 710           22.8     4    108    93   3.85   2.320
Hornet 4 Drive       21.4     6    258   110   3.08   3.215
Hornet Sportabout    18.7     8    360   175   3.15   3.440

Стили таблиц

kable_styling предлагает несколько других способов настроить внешний вид таблицы HTML.

Классы таблиц

Если вы знакомы с twitter bootstrap, вы, вероятно, уже знаете его предопределенные классы, включая striped, bordered, hover, condensed и responsive. Если вы не знакомы с ними, не беспокойтесь, вы можете взглянуть на их сайт документации, чтобы понять, как они выглядят. Все эти варианты доступны здесь.

Например, чтобы добавить в таблицу striped lines (альтернативные цвета строк) и выделить выделенную строку, вы можете просто ввести:

kable(dt) %>%
kable_styling(bootstrap_options = c("striped", "hover"))


Опция condensed также может быть удобна во многих случаях, когда вы не хотите, чтобы ваша таблица была слишком большой. У нее немного меньшая высота строки.

kable(dt) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))


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

kable(dt) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))


Полная ширина?

По умолчанию таблица bootstrap занимает 100% ширины. Ее предполагается использовать вместе с сеткой для правильного масштабирования таблицы. Однако, когда вы пишете документ rmarkdown, вы, вероятно, не захотите писать свой собственный CSS или сетку. Для некоторых небольших таблиц с несколькими столбцами таблица шириной в страницу выглядит ужасно. Чтобы упростить задачу, вы можете указать, хотите ли вы, чтобы таблица имела full_width или нет в kable_styling. По умолчанию для HTML-таблиц для параметра full_width установлено значение TRUE (обратите внимание, что для LaTeX значение по умолчанию - FALSE, поскольку я не хочу изменять «общий» вид, если вы не указали это).

kable(dt) %>%
kable_styling(bootstrap_options = "striped", full_width = F)


Позиция

Позиция таблицы имеет значение только в том случае, если таблица не имеет full_width. Вы можете выровнять таблицу по центру, левой или правой стороне страницы.

kable(dt) %>%
kable_styling(bootstrap_options = "striped", full_width = F, position = "left")


Помимо этих трех общих параметров, вы также можете расположить текст вокруг таблицы, используя параметры float-left или float-right.

kable(dt) %>%
kable_styling(bootstrap_options = "striped", full_width = F, position = "float_right")

Размер шрифта

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

kable(dt) %>%
kable_styling(bootstrap_options = "striped", font_size = 7)


Фиксированная строка заголовка таблицы

Если у вас очень длинная таблица, вы можете подумать об использовании опции fixed_header, чтобы зафиксировать строку заголовка вверху при прокрутке таблицы. По умолчанию установлен белый фон. Если вам нужен другой цвет, вы можете установить fixed_header = list (enabled = T, background = "red").

kable(mtcars[1:10, 1:5]) %>%
kable_styling(fixed_thead = T)



Спецификация столбца/строки

Спецификация столбца

Если у вас есть таблица с большим количеством пояснительного текста, вы можете указать ширину столбца для различных столбцов, поскольку автоматическая настройка в HTML может работать не лучшим образом, в то время как базовая таблица LaTeX действительно плохо справляется с переносом текста. Кроме того, иногда вы можете выделить столбец (например, столбец «Итого»), выделив его жирным шрифтом. В этом сценарии вы можете использовать column_spec(). Вы можете найти пример ниже.

Предупреждение: если у вас очень длинная таблица, вы должны быть осторожны при использовании column_spec, поскольку изменение узла xml требует времени.

text_tbl <- data.frame(
Items = c("Item 1", "Item 2", "Item 3"),
Features = c(
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vehicula tempor ex. Morbi malesuada sagittis turpis, at venenatis nisl luctus a. ",
"In eu urna at magna luctus rhoncus quis in nisl. Fusce in velit varius, posuere risus et, cursus augue. Duis eleifend aliquam ante, a aliquet ex tincidunt in. ",
"Vivamus venenatis egestas eros ut tempus. Vivamus id est nisi. Aliquam molestie erat et sollicitudin venenatis. In ac lacus at velit scelerisque mattis. "
)
)

kable(text_tbl) %>%
kable_styling(full_width = F) %>%
column_spec(1, bold = T, border_right = T) %>%
column_spec(2, width = "30em", background = "yellow")



Спецификация строки

Подобно column_spec, вы можете определять спецификации для строк. В настоящее время можно выделить полужирным шрифтом или курсивом всю строку. Обратите внимание, что, как и в случае с другими функциями, относящимися к строкам, в kableExtra, для определения позиции целевой строки вам не нужно считать строки заголовков или групповых меток.

kable(dt) %>%
kable_styling("striped", full_width = F) %>%
column_spec(5:7, bold = T) %>%
row_spec(3:5, bold = T, color = "white", background = "#D7261E")


Строки заголовка

Одним из особых случаев row_spec является то, что вы можете указать формат строки заголовка через row_spec (row = 0, ...).

kable(dt) %>%
kable_styling("striped", full_width = F) %>%
row_spec(0, angle = -45)



Спецификация ячейки/текста

Функция cell_spec представлена ​​в версии kableExtra 0.6.0. В отличие от column_spec и row_spec, эта функция предназначена для использования до того, как data.frame попадет в функцию kable. По сравнению с составлением списка двухмерных индексов для целевых ячеек, она намного проще в изучении и использовании, и отлично сочетается с функциями mutate и summarize в dplyr. Здесь следует отметить две вещи: 

1. Поскольку cell_spec генерирует необработанный код HTML или LaTeX, убедитесь, что вы не забыли поставить escape = FALSE в kable. В то же время вы должны экранировать специальные символы, включая %, вручную. 

2. cell_spec нуждается в способе узнать, хотите ли вы html или latex. Вы можете указать его локально в функции или глобально с помощью метода options (knitr.table.format = "latex"), как предложено в начале. Если вы ничего не предоставите, эта функция по умолчанию будет выводить в формате HTML.

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

Условная логика

Cell_spec очень просто использовать с условной логикой. Вот пример.

library(dplyr)
mtcars[1:10, 1:2] %>%
mutate(
car = row.names(.),
mpg = cell_spec(mpg, "html", color = ifelse(mpg > 20, "red", "blue")),
cyl = cell_spec(cyl, "html", color = "white", align = "c", angle = 45,
background = factor(cyl, c(4, 6, 8),
c("#666666", "#999999", "#BBBBBB")))
) %>%
select(car, mpg, cyl) %>%
kable(format = "html", escape = F) %>%
kable_styling("striped", full_width = F)


Визуализируйте данные с помощью Viridis Color

Этот пакет также имеет несколько вспомогательных функций, включая spec_color, spec_font_size и spec_angle. Эти функции могут изменять масштаб непрерывных переменных до определенных размеров. Например, функция spec_color будет отображать непрерывную переменную в любую цветовую палитру viridis. Она предлагает очень наглядное представление в табличном формате.

iris[1:10, ] %>%
mutate_if(is.numeric, function(x) {
cell_spec(x, bold = T,
color = spec_color(x, end = 0.9),
font_size = spec_font_size(x))
}) %>%
mutate(Species = cell_spec(
Species, color = "white", bold = T,
background = spec_color(1:10, end = 0.9, option = "A", direction = -1)
)) %>%
kable(escape = F, align = "c") %>%
kable_styling(c("striped", "condensed"), full_width = F)


В приведенном выше примере я использую функции mutate из dplyr. Вам не обязательно его использовать. Базовые решения R, такие как iris$Species <- cell_spec (iris$Species, color = "red"), также работают.

Спецификации текста

Если вы проверите результаты cell_spec, вы обнаружите, что эта функция не делает ничего, кроме обертывания текста соответствующим синтаксисом форматирования HTML/LaTeX. Результатом этой функции является просто вектор символьных строк. В результате, когда вы пишете документ rmarkdown или пишете текст в приложениях shiny, если вам нужны дополнительные разметки, кроме полужирного или курсивного текста, вы можете использовать эту функцию для раскрашивания, изменения размера шрифта или поворота текста.

Функция text_spec с псевдонимом также предназначена для более буквального написания. В HTML между этими двумя функциями нет разницы.

sometext <- strsplit(paste0(
"You can even try to make some crazy things like this paragraph. ",
"It may seem like a useless feature right now but it's so cool ",
"and nobody can resist. ;)"
), " ")[[1]]
text_formatted <- paste(
text_spec(sometext, color = spec_color(1:length(sometext), end = 0.9),
font_size = spec_font_size(1:length(sometext), begin = 5, end = 20)),
collapse = " ")

# To display the text, type `r text_formatted` outside of the chunk

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

Подсказка

Добавить всплывающую подсказку к тексту с помощью cell_spec очень просто. Например, text_spec ("tooltip", color = "red", tooltip = "Hello World") даст вам что-то вроде "Hover over me" (вам нужно подождать несколько секунд, прежде чем ваш браузер отобразит ее).

Обратите внимание, что исходная всплывающая подсказка на базе браузера работает медленно. Если вы хотите получить более быстрый ответ, вы можете инициализировать всплывающую подсказку bootstrap, разместив на странице следующий HTML-код.

<script>
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
});
</script>

В документе rmarkdown вы можете просто опустить его за пределы любых блоков R. Однако, к сожалению, для страниц rmarkdown с плавающим оглавлением (таких как эта страница) вы не можете использовать всплывающие подсказки bootstrap, потому что существует конфликт в пространстве имен между Bootstrap и JQueryUI (tocify.js). В результате я не могу предоставить здесь живую демонстрацию. Если вы хотите получить всплывающую подсказку вместе с плавающим оглавлением, вам следует использовать всплывающее окно, которое имеет очень похожий эффект.

Всплывающее сообщение

Всплывающее сообщение очень похоже на всплывающую подсказку, но может вмещать больше содержимого. В отличие от всплывающей подсказки, которая может минимально работать без того, чтобы вы вручную включали этот модуль, вы должны включить модуль всплывающего окна, чтобы он заработал. Хорошая новость заключается в том, что на этот раз нет конфликта между Bootstrap и JQueryUI, вы можете использовать его без каких-либо проблем.

<script>
$(document).ready(function(){
$('[data-toggle="popover"]').popover();
});
</script>

popover_dt <- data.frame(
position = c("top", "bottom", "right", "left"),
stringsAsFactors = FALSE
)
popover_dt$`Hover over these items` <- cell_spec(
paste("Message on", popover_dt$position), # Cell texts
popover = spec_popover(
content = popover_dt$position,
title = NULL, # title will add a Title Panel on top
position = popover_dt$position
))
kable(popover_dt, escape = FALSE) %>%
kable_styling("striped", full_width = FALSE)

Ссылки

Вы можете добавлять ссылки в текст с помощью text_spec ("Google", link = "https://google.com"): Google. Если вы хотите, чтобы ваше сообщение при наведении курсора было более заметным, может быть хорошей идеей поставить # (вернуться к началу страницы) или javascript: void (0) (буквально ничего не делать) в параметре ссылки. text_spec("Hover on me", link = "javascript:void(0)", popover = "Hello"): Hover on me

Интеграция с formattable

Вы можете объединить хорошие части из kableExtra и formattable в одно целое. Узнать больше можно здесь:


library(formattable)
mtcars[1:5, 1:4] %>%
mutate(
car = row.names(.),
mpg = color_tile("white", "orange")(mpg),
cyl = cell_spec(cyl, angle = (1:5)*60,
background = "red", color = "white", align = "center"),
disp = ifelse(disp > 200,
cell_spec(disp, color = "red", bold = T),
cell_spec(disp, color = "green", italic = T)),
hp = color_bar("lightgreen")(hp)
) %>%
select(car, everything()) %>%
kable(escape = F) %>%
kable_styling("hover", full_width = F) %>%
column_spec(5, width = "3cm") %>%
add_header_above(c(" ", "Hello" = 2, "World" = 2))


Сгруппированные столбцы/строки

Добавление строки заголовка в группы столбцов

Таблицы с многострочными заголовками могут быть очень полезны для демонстрации сгруппированных данных. Для этого вы можете передать свой объект kable в add_header_above(). Переменная header должна быть именованным символом с именами в виде имен новых столбцов и значениями в виде диапазона столбцов. Для вашего удобства, если диапазон столбцов равен 1, вы можете игнорировать часть = 1, поэтому функцию ниже можно записать как ʻadd_header_above(c(" “,”Group 1" = 2, “Group 2” = 2, “Group 3” = 2)).

kable(dt) %>%
kable_styling("striped") %>%
add_header_above(c(" " = 1, "Group 1" = 2, "Group 2" = 2, "Group 3" = 2))


На самом деле, если вы хотите добавить еще одну строку заголовка вверху, пожалуйста, делайте это.

kable(dt) %>%
kable_styling(c("striped", "bordered")) %>%
add_header_above(c(" ", "Group 1" = 2, "Group 2" = 2, "Group 3" = 2)) %>%
add_header_above(c(" ", "Group 4" = 4, "Group 5" = 2)) %>%
add_header_above(c(" ", "Group 6" = 6))


Группировка строк с помощью маркировки

Иногда нам нужно сгруппировать несколько строк таблицы. Это могут быть элементы одной темы (например, животные одного вида) или просто разные группы данных для категориальной переменной (например, возраст <40, возраст> 40). С помощью функции group_rows()/pack_rows() в kableExtra задачи такого типа могут быть выполнены в одной строке. См. пример ниже. Обратите внимание, что при подсчете начальных и конечных строк группы не требуется подсчитывать строки заголовков или другие строки меток группы. Вам нужно думать только о номерах строк в «исходном dataframe R».

kable(mtcars[1:10, 1:6], caption = "Group Rows") %>%
kable_styling("striped", full_width = F) %>%
pack_rows("Group 1", 4, 7) %>%
pack_rows("Group 2", 8, 10)


Другой способ использования pack_rows - предоставить индекс группировки, аналогичный add_header_above(). Эта функция доступна только в kableExtra> 0.5.2.

# Not evaluated. This example generates the same table as above.
kable(mtcars[1:10, 1:6], caption = "Group Rows") %>%
kable_styling("striped", full_width = F) %>%
pack_rows(index = c(" " = 3, "Group 1" = 4, "Group 2" = 3))

Опытные пользователи могут даже определить свой собственный CSS для маркировки групп.

kable(dt) %>%
kable_styling("striped", full_width = F) %>%
pack_rows("Group 1", 3, 5, label_row_css = "background-color: #666; color: #fff;")


Важное замечание!

Обратите внимание, что dplyr 0.8.0+ также представляет функцию group_rows для этой тривиальной задачи. Поэтому я создаю эту функцию pack_rows как псевдоним исходной group_rows. В будущем я рекомендую всем пользователям kableExtra использовать pack_rows вместо group_rows, чтобы избавиться от конфликта NAMESPACE.

В качестве альтернативы для уже существующих кодов у вас есть два способа решить эту проблему. Вы можете либо загрузить kableExtra после dplyr или tidyverse, либо использовать конфликтующий пакет. Вот пример.

# Method 1
pack_rows() # instead of group_rows()

# Method 2
library(dplyr)
library(kableExtra)

# Method 3
conflicted::conflict_prefer("group_rows", "kableExtra", "dplyr")

Отступ строк

В отличие от pack_rows(), которая вставляет строку маркировки, иногда мы хотим перечислить несколько подгрупп в одной общей. В этом случае, вероятно, больше подходит add_indent(). Опытные пользователи могут даже определить свой собственный CSS для маркировки групп.

kable(dt) %>%
kable_styling("striped", full_width = F) %>%
add_indent(c(1, 3, 5))


Группировка строк с помощью многострочной ячейки

Функция pack_rows отлично подходит для отображения простой структурной информации о строках, но иногда людям может потребоваться показать структурную информацию с несколькими слоями. Когда это случается, вы можете подумать об использовании вместо этого collapse_rows, которая поместит повторяющиеся ячейки в столбцах в ячейки с несколькими строками. Вертикальное выравнивание ячейки контролируется valign со значением по умолчанию «top».

collapse_rows_dt <- data.frame(C1 = c(rep("a", 10), rep("b", 5)),
C2 = c(rep("c", 7), rep("d", 3), rep("c", 2), rep("d", 3)),
C3 = 1:15,
C4 = sample(c(0,1), 15, replace = TRUE))
kable(collapse_rows_dt, align = "c") %>%
kable_styling(full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1:2, valign = "top")


Сноски таблицы

Теперь для создания сносок таблицы рекомендуется использовать новую функцию footnote вместо add_footnote.

Документацию для add_footnote можно найти здесь.

В footnote используются четыре системы обозначений: общая, цифровая, алфавитная и символьная. Последние три типа сносок будут помечены соответствующими знаками, а общие не помечены. Вы можете выбрать любую из этих систем или выбрать отображение их всех для выполнения требований сносок таблиц.

kable(dt, align = "c") %>%
kable_styling(full_width = F) %>%
footnote(general = "Here is a general comments of the table. ",
number = c("Footnote 1; ", "Footnote 2; "),
alphabet = c("Footnote A; ", "Footnote B; "),
symbol = c("Footnote Symbol 1; ", "Footnote Symbol 2")
)


Вы также можете указать заголовок для каждой категории, используя аргументы *** _ title. Значение по умолчанию для general_title - Note:» и «» для остальных трех. Вы также можете изменить порядок, используя footnote_order. Вы даже можете отображать сноски в виде фрагментов текста (по умолчанию в виде списка) с помощью footnote_as_chunk. Форматом шрифта заголовков управляет title_format с параметрами, включая «italic» (по умолчанию), «bold» и «underline».

kable(dt, align = "c") %>%
kable_styling(full_width = F) %>%
footnote(general = "Here is a general comments of the table. ",
number = c("Footnote 1; ", "Footnote 2; "),
alphabet = c("Footnote A; ", "Footnote B; "),
symbol = c("Footnote Symbol 1; ", "Footnote Symbol 2"),
general_title = "General: ", number_title = "Type I: ",
alphabet_title = "Type II: ", symbol_title = "Type III: ",
footnote_as_chunk = T, title_format = c("italic", "underline")
)


Если вам нужно добавить сноски в таблицу, вам нужно сделать это вручную (без особого труда) с помощью footnote_mark _***(). Помните, что, как и в случае с cell_spec, вам нужно указать этой функции, хотите ли вы, чтобы она выполнялась в HTML (по умолчанию) или в LaTeX. Вы можете установить это для всех, используя глобальную опцию knitr.table.format. ТАКЖЕ, если вы когда-либо использовали footnote_mark _***(), вам нужно поставить escape = F в свою функцию kable, чтобы избежать экранирования специальных символов.

dt_footnote <- dt
names(dt_footnote)[2] <- paste0(names(dt_footnote)[2],
footnote_marker_symbol(1))
row.names(dt_footnote)[4] <- paste0(row.names(dt_footnote)[4],
footnote_marker_alphabet(1))
kable(dt_footnote, align = "c",
# Remember this escape = F
escape = F) %>%
kable_styling(full_width = F) %>%
footnote(alphabet = "Footnote A; ",
symbol = "Footnote Symbol 1; ",
alphabet_title = "Type II: ", symbol_title = "Type III: ",
footnote_as_chunk = T)


Возможности только для HTML

Поле прокрутки

Если у вас огромная таблица и вы не хотите уменьшать размер шрифта до нечитаемого, вы можете поместить свою HTML-таблицу в поле прокрутки, из которого пользователи могут выбрать ту часть, которую им нужно прочитать. Обратите внимание, что ползунок прокрутки не подходит для печати, поэтому помните об этом, когда будете использовать эту функцию.

Когда вы используете scroll_box, вы можете указать высоту или ширину. Когда вы укажете высоту, вы получите вертикально прокручиваемое поле и наоборот. Если вы укажете оба варианта, вы получите поле с двусторонней прокруткой.

kable(cbind(mtcars, mtcars)) %>%
kable_styling() %>%
scroll_box(width = "500px", height = "200px")


Вы также можете указать ширину в процентах.

kable(cbind(mtcars, mtcars)) %>%
add_header_above(c("a" = 5, "b" = 18)) %>%
kable_styling() %>%
scroll_box(width = "100%", height = "200px")


Начиная с версии 1.1.0, если у вас есть поле фиксированной высоты, строка заголовка будет фиксированной.

Сохранение HTML-таблицы напрямую

Если вам нужно сохранить эти HTML-таблицы, но вы не хотите создавать их с помощью rmarkdown, вы можете попробовать использовать функцию save_kable (). Вы можете выбрать, разрешить ли этим HTML-файлам быть самодостаточными (по умолчанию - да). Автономные файлы, упакованны вместе с CSS в файл HTML, поэтому они довольно большие, когда их много.

kable(mtcars) %>%
kable_styling() %>%
save_kable(file = "table1.html", self_contained = T)

Другие пакеты

Поскольку структура kable относительно проста, не должно быть слишком сложно преобразовать таблицы HTML или LaTeX, созданные другими пакетами, в объект kable, а затем использовать kableExtra для изменения выходных данных. Если вы автор пакета, не стесняйтесь обращаться ко мне, и мы можем сотрудничать.

tables

Последняя версия таблиц поставляется с функцией toKable(), которая совместима с функциями в kableExtra (> = 0.9.0).

xtable

Для пользователей xtable, если вы хотите использовать для этого функции kableExtra, ознакомьтесь с функцией xtable2kable(), поставляемой с kableExtra 1.0.

# Not evaluating
xtable::xtable(mtcars[1:4, 1:4], caption = "Hello xtable") %>%
xtable2kable() %>%
column_spec(1, color = "red")

Комментариев нет:

Отправить комментарий