I am trying to create a table to hold some basic information using Kable in RMarkdown that will be generated in HTML, PDF, and Word. Here is the code I have
---
title: "test"
author: ''
date: "2015/03/24"
output:
pdf_document:
keep_tex: yes
---
```{r kable1, echo=FALSE}
Variable <- c("VAR1", "VAR2", "VAR3", "VAR4")
Label <- c("LABEL", "A very loooooooooooooooooooooooooooooooooooooooooooo ooooooooooooooooooooooooooooooooooooooo nnnnnnngggggggg label yall", "LAB3", "LAB4")
Classification <- c("Type1", "Type2", "Type1", "Type1")
data <- data.frame(Variable, Label, Classification)
library(knitr)
kable(data)
```
```{r kable2, echo=FALSE}
Variable <- c("VAR1", "VAR2", "VAR3", "VAR4")
Label <- c("LABEL", "LabLE", "LAB3", "LAB4")
Classification <- c("Type1", "Type2", "Type1", "Type1")
data <- data.frame(Variable, Label, Classification)
library(knitr)
kable(data)
```
The HTML output is as follows. This is what I want. I like how the table fills out the html. However, when I produce PDF I get the following.
As we can see there are issues with the PDF, the first table runs off the page and the second does not fill up the entire width. I am, unfortunately, a n00b when it comes to R, Kable, and RMarkdown. Is there a way to set options on the kable table so that the PDF looks as nice as the HTML in terms of page placement and width? Thanks!
LaTeX will not break the long lines inside of a table cell for you -- or you should use a custom environment for that, which can be sometimes really frustrating when writing markdown to be processed by Pandoc. That's why I came up with the idea to break long lines inside of the cells before transforming to markdown via the pander package. Quick example:
> pander(data, split.cells = 30, split.table = Inf)
-------------------------------------------------------------------------
Variable Label Classification
---------- --------------------------------------------- ----------------
VAR1 LABEL Type1
VAR2 A very Type2
loooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooo
nnnnnnngggggggg label yall
VAR3 LAB3 Type1
VAR4 LAB4 Type1
-------------------------------------------------------------------------
Or if you will have several tables with the same problem, specify the split
value once:
> panderOptions('table.split.table', Inf)
> pander(data)
-------------------------------------------------------------------------
Variable Label Classification
---------- --------------------------------------------- ----------------
VAR1 LABEL Type1
VAR2 A very Type2
loooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooo
nnnnnnngggggggg label yall
VAR3 LAB3 Type1
VAR4 LAB4 Type1
-------------------------------------------------------------------------
In short, look for the table.split.table
and table.split.cells
global options, although there are a bunch of other useful tweaks as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With