I try to create a table using the format "markdown" of the function kable(), but the spaces between the columns are so wide that the table extends over the page. Is there anyway to adjust the cell size so that a table in markdown format does not extend over the page? In latex format it stays within the page, but I do not want this format nor do I want html. I want the output file to be .pdf. I know that a similar question has been asked here, but my question is specific to the format markdown. If you feel this is a duplicate, please merge the questions.
Reproducible example:
---
title: "Example"
author: "JAQuent"
date: "7 Juni 2017"
output: pdf_document
---
\tiny
```{r results='asis', echo = FALSE, warning = FALSE}
library(knitr)
table1 <- data.frame(Factor1 = c('level 1', 'level 1', 'level 2', 'level 2'),
Factor2 = c('level 1', 'level 2', 'level 1', 'level 2'),
Parameter1 = sample(1000000:9999999, 2),
Parameter2 = sample(1000000:9999999, 2),
Parameter3 = sample(1000000:9999999, 2),
Parameter4 = sample(1000000:9999999, 2),
Parameter5 = sample(1000000:9999999, 2),
Parameter6 = sample(1000000:9999999, 2),
Parameter7 = sample(1000000:9999999, 2))
names(table1) <- c('Factor1', 'Factor2', 'Parameter1', 'Parameter2', 'Parameter3', 'Parameter4', 'Parameter5', 'Parameter6', 'Parameter7')
kable(table1, format = 'markdown')
kable(table1, format = 'latex')
```
By defining the table format and adding some CSS styling you can change the size of the like so: knitr::kable(x, format = "html", table. attr = "style='width:30%;'") . This may lead to loosing the table lines.
The kable() function in knitr is a very simple table generator, and is simple by design. It only generates tables for strictly rectangular data such as matrices and data frames. You cannot heavily format the table cells or merge cells.
Upon installing, inserttable registers a new RStudio Addin (Insert Table) that can be used to easily insert a table in a Rmd document. To use it, open a Rmd or R document and select “Addins –> Insert Table”.
A couple of the examples in ?kable
contain a padding argument. Feeding it 0L
gets you closer, but it turns out that this argument will take negative integers, so
kable(table1, format = 'markdown', padding=-1L)
will produce something closer to what your are looking for.
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