Закрепить заголовок сверху с помощью kable или DT

Я пытаюсь включить вертикально прокручиваемую таблицу в свой HTML-вывод. Таблица выглядит потрясающе, но я бы хотел поправить верхний колонтитул (пока он, как и все остальное, прокручивается вверх). Плюс будет возможность фильтровать столбцы или взаимодействовать с ними (например, сортировка).

Я пробовал использовать как kable () + kableExtra (), так и DT (). Насколько я понимаю, с DT было бы проще, но документация меня очень запутывает.

Я делаю примерно так:

library(datasets)
library(knitr)
library(kableExtra)
library(DT)

data(iris)

# with kable
kable(iris, "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "responsive"), 
                full_width = F) %>%
  scroll_box(width = "100%", height = "400px")

# with DT
datatable(showData, options = list("scrollY"))

Я не могу найти способ исправить верхний колонтитул или добавить фильтры. Какие-нибудь советы?

Спасибо!


person Luca    schedule 26.07.2018    source источник
comment
Обновление: я обновил DT (), и теперь таблица более функциональна. Вы можете упорядочить столбцы, но их нельзя прокручивать и фильтровать. Это тоже довольно некрасиво. Будет обновляться дальше, если я решу это ...   -  person Luca    schedule 28.07.2018
comment
См. 10. Скроллер здесь: rstudio.github.io/DT/extensions.html Это не то, что вам нужно?   -  person Stéphane Laurent    schedule 01.08.2018
comment
Спасибо! Более менее! Самая большая проблема в том, что в одной из моих колонок много текста. С помощью kable () он отображается небольшими абзацами, переходя к следующей строке. В DT () столбец становится очень большим, что позволяет прокручивать, что неудобно ... Более того, при горизонтальной прокрутке заголовок остается фиксированным, что делает заголовок и ячейки не чередующимися.   -  person Luca    schedule 01.08.2018


Ответы (1)


Вы можете комбинировать собственный CSS с kable, чтобы создать прокручиваемое тело таблицы с фиксированным заголовком.

Например, создайте файл styles.css в каталоге проекта со следующим содержанием:

.table-fixed-header tbody{
  display:block;
  overflow:auto;
  height:400px;
  width:100%;
}
.table-fixed-header thead tr{
  display:table-header-group;
  height:100%;
}

В YAML документа .Rmd обратитесь к styles.css:

output: 
html_document:
    css: styles.css

В фрагменте кода R передайте имя стиля функции kable ()

kable(iris, escape = F, table.attr='class="table-fixed-header"') %>%
  kable_styling()
person user1420372    schedule 20.02.2019