Dambo
Dambo

Reputation: 3486

How to split kable over multiple columns?

I am trying to produce a "longitudinal" layout for long tables in RMarkdown with kable. For example, I would like a table to be split over two columns, like in the example below:

dd <- data.frame(state=state.abb, freq=1:50)
kable(list(state=dd[1:25,], state=dd[26:50,]))

However, this hack produces an output that looks a way worse than the normal kable output (for example the header is not in bold). Is there a "proper" way to do this using kable?

Upvotes: 14

Views: 12283

Answers (2)

crazy_abdul
crazy_abdul

Reputation: 563

You can still use Kable with a slight modification to your code.

dd <- data.frame(state=state.abb, freq=1:50)

knitr::kable(
  list(dd[1:25,], dd[26:50,]),
  caption = 'Two tables placed side by side.',
  booktabs = TRUE
)

This code is a modification of this. You can also find more information about tables on that page

Upvotes: 9

Peter
Peter

Reputation: 7770

kable is a great tool, but has limits. For the type of table you're describing I would use one of two different tools depending on output wanted.

  • Hmisc::latex for .Rnw -> .tex -> .pdf

  • htmlTable::htmlTable for .Rmd -> .md -> .html

Here is an example of the latter:

dd <- data.frame(state=state.name, freq=1:50)
dd2 <- cbind(dd[1:25, ], dd[26:50, ])

library(htmlTable)
htmlTable(dd2,
          cgroup = c("Set 1:25", "Set 26:50"),
          n.cgroup = c(2, 2),
          rnames = FALSE)

enter image description here

Upvotes: 11

Related Questions