Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scale kable table to fit page width

Tags:

How do you format a table in pdf using kable function? Because my output table width exceeds the width of the pdf. Here is an example:

--- output: pdf_document ---  ```{r} df <- cbind(mtcars[1:5,], mtcars[1:5,]) knitr::kable(df) ``` 

enter image description here

like image 768
Bustergun Avatar asked Mar 01 '18 07:03

Bustergun


2 Answers

One option is to use kable_styling from the kableExtra package. The option latex_options="scale_down" will fit the table within the paper margins. See the vignette for detailed examples on all of the formatting options.

--- output: pdf_document ---  ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE) library(knitr) library(kableExtra) ```  ```{r} kable(cbind(mtcars[1:5,], mtcars[1:5,])) ```  ```{r} kable(cbind(mtcars[1:5,], mtcars[1:5,]), format="latex", booktabs=TRUE) %>%    kable_styling(latex_options="scale_down") ``` 

enter image description here

like image 97
eipi10 Avatar answered Sep 18 '22 12:09

eipi10


Note if you are using longtable, this answer says,

since longtable doesn't support resizebox, you cannot use the "scale_down" option in latex_options.

However, they suggested using font_size, e.g.,

kable(df, "latex", longtable = T, booktabs = T) %>%   kable_styling(font_size = 7) 
like image 28
dfrankow Avatar answered Sep 19 '22 12:09

dfrankow