Rotate a table from R markdown in pdf
knitr, r, r-markdown
Solution
The `out.extra='angle=90'` only works on Figures, and unfortunately not tables. Here are several potential approaches:
KableExtra (Rotate Page)
You can easily rotate tables using the useful addon package `kableExtra`. Specifically, the `landscape()` function will put the table on an single landscape page. It’s useful for wide tables that can’t be printed on a portrait page.
library(kableExtra)
kable(iris[1:5,],
format = "latex", booktabs = TRUE) %>%
kableExtra::landscape()
The limitation of these function is that it does force a new page, so depending on the size of your table it could leave a bit of blank space.
KableExtra (Scale Width)
You can scale the width of the table using the function `kable_styling(latex_options = "scale_down")`. This will force the table to the width of the page.
kable(iris[1:5,],
format = "latex", booktabs = TRUE) %>%
kable_styling(latex_options = "scale_down")
For more examples of the kableExtra package, check out the package here: https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf
Stargazer (Rotate Table)
Other options are available, but these largely require the installation of additional LaTeX packages. For example, the `stargazer` package can print tables in landscape using the `float.env` argument:
{r, results="asis"} stargazer(iris[1:5,], float.env = "sidewaystable")
`
This requires `\usepackage{dcolumn}` in LaTeX preamble
Read more about customising your LaTex preamble here: https://tex.stackexchange.com/questions/171711/how-to-include-latex-package-in-r-markdown
Problem
I'm writing in R Markdown and have a contingency table that is quite wide. I am converting the R markdown document to a PDF using pandoc. Is it possible to rotate or shrink the table? Ideally this would be done without having to switch to LaTeX formatting. My Attempts: I've been abusing the figure options in knitr to attempt this, but whether I use kable or xtable, I haven't had any luck. Some permutations I have tried include: ```` ```{r out.extra='angle=90', results='asis'} library(knitr) kable(iris[1:5,]) ``` ``{r size='footnotesize', results='asis'} library(knitr) kable(iris[1:5,]) ``` ```{r out.extra='angle=90', results='asis'} library(xtable) xtable(iris[1:5,]) ``` ```{r size='footnotesize', results='asis'} library(xtable) xtable(iris[1:5,]) ``` ```` All of these show the table nicely, but do not rotate it. The code I'm using to knit is: ``` Rscript -e "library(knitr); knit('table.Rmd', 'table.md')" ``` And to convert to pdf: ``` pandoc table.md -o table.pdf ```