如何在 RMarkdown 中生成带有标题的分页 table?

How can I generate a paged table with a title in RMarkdown?

我有一个 data.frame,我想以格式化的方式在 RMarkdown 文档(HTML 输出)中打印。我需要它的 3 个功能我无法同时获得:

  1. 它需要在顶部有一个标题或标题来解释它是什么。
  2. 由于它可能很长,我希望它可以滚动或分页
  3. 标题和列 header 应始终显示在顶部,即使 table 被滚动或分页时也是如此

我可以通过 kableExtra 轻松滚动获得标题:

library(kableExtra)
cars %>%
    kable(caption = 'Cars') %>%
    kable_styling(bootstrap_options = c('striped', 'condensed')) %>%
    scroll_box(width = "500px", height = "200px")

但是当我向下滚动时,标题和列 header 也会滚动,很难看清每列是什么。


通过将 df_print: paged 添加到 YAML header,我可以从默认打印行为获得非常漂亮的分页输出(参见 R Markdown: The Definitive Guide):

---
title: "Motor Trend Car Road Tests"
output:
  html_document:
    df_print: paged
---

```{r}
cars
```

但是,据我所知,没有办法在上面加上标题或说明。我可以使用 markdown 添加标题,但是生成 table 的代码会卡在标题和 table 之间。我还缺少其他选项吗?

我建议尝试 DT::datatable,它会在 html 输出中生成高度可配置的 tables。

以下代码将创建一个可滚动的 table 和一个固定的 header。

DT::datatable(mtcars, 
         extensions = c('FixedColumns',"FixedHeader"),
          options = list(scrollX = TRUE, 
                         paging=FALSE,
                         fixedHeader=TRUE))