rpk62 rpk62 -4 years ago 167
R Question

Produce a table spanning multiple pages using kable()

I would like to produce a table that spans over multiple pages using kable(). I know this is possible using xtable() with the "longtable" option, but I need kable() for other features.

Any ideas?

```{r cars, echo=TRUE, results='asis', warning=FALSE, message=FALSE}
library(knitr)
library(kableExtra)

# OUTPUT 1, fits on one page
output = rbind(mtcars[, 1:5])

kable(output, booktabs = T, format="latex", caption = "Small Output")


# OUTPUT 2, will not fit on one page
output = rbind(mtcars[, 1:5], mtcars[, 1:5])

kable(output, booktabs = T, format="latex", caption = "Large Output")

```


Update: I am dumb! "longtable=TRUE," is an option. The problem is that this changes the order of my output and kinda messes things up.

Answer Source

You can try to use the kableExtra package. If you specify hold_position in kable_styling, you should be able to ping the table to the place you want.

Also, in the current dev version, I introduced a new feature called repeat_header for longtable to repeat the header row on every page. You can check it out.

kable(output, "latex", booktabs = T, longtable = T, caption = "Test") %>%
  kable_styling(latex_options = c("hold_position", "repeat_header)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download