'Simple manual RMarkdown tables that look good in HTML, PDF and DOCX
How can I manually and simply format a table in RMarkdown that will look good when converted to HTML (using the knitr and markdown packages), PDF (using pandoc and miktex) and docx (using pandoc)?
I want to be able to write small tables in RMarkdown that are not a result of R functions that look good in the three formats I use most often. So far I've found a format that looks good in 2 of the 3 formats, is 3/3 possible?
One. This looks good after Knit HTML but not good in the PDF or docx
<table>
<tr>
<td>Eggs</td>
<td>Ham</td>
</tr>
<tr>
<td>Basil</td>
<td>Tomato</td>
</tr>
</table>
Two. This one looks good after Knit HTML but not good in the PDF or docx
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
Three. This one does not look good after Knit HTML but is good in the PDF and docx (best option so far)
V1 Tweedledee Tweedledum
-------- -------------- ----------------
Age 14 14
Height 3'2" 3'2"
Politics Conservative Conservative
Religion "New Age" Syrian Orthodox
--------- -------------- ----------------
Four. This looks good after Knit HTML and make PDF and docx (winner!) but is not the manual formatting I'm after.
```{r table1, echo=FALSE, message=FALSE, warnings=FALSE, results='asis'}
require(pander)
panderOptions('table.split.table', Inf)
set.caption("Data on cars")
pander(mtcars, style = 'rmarkdown')
```
This is how I'm making the PDF and docx files:
filen <- "table" # name of my RMarkdown file without suffix
knit(paste0(filen,".Rmd"))
# make PDF
system(paste0("pandoc -s ", paste0(filen,".md"), " -t latex -o ", paste0(filen,".pdf"), " --highlight-style=tango -S"))
# make docx
system(paste0("pandoc -s ", paste0(filen,".md"), " -o ", paste0(filen,".docx"), " --highlight-style=tango -S"))
Solution 1:[1]
There are many better answers to this question today as R Markdown table libraries continue to advance. Comparisons done just a few months ago are often unhelpful or misleading. So I often need to prototype a quick comparison of several options for tabular report layouts of varying complexity.
Here is a simple approach and toolset for evaluating alternative table libraries and output formats with your own data:
- Create a TableTester.Rmd file with code below. (Note: You can use your own df to experiment with package-specific formatting.)
- Generate html, pdf and docx output with TestRunner.R script (code below)
R Markdown Code - TableTester.Rmd
---
title: "Table-Evaluation"
output:
pdf_document:
latex_engine: xelatex
html_document:
theme: cosmo
word_document: default
---
```{r setup-data-test, include=FALSE}
library(reactable)
library(kableExtra)
library(flextable)
df <- tibble(
food = c("eggs", "ham", "squash", "rhubarb"),
color = c("green", "green", "yellow", "purple"),
class = c("imaginary", "imaginary", "real", "real")
)
```
```{r, test}
reactable(df)
kbl(df)
flextable(df)
```
R Script - TestRunner.R
for (i in c("html_document", "pdf_document", "word_document")) {
rmarkdown::render(
input = "TableTester.Rmd",
output_format = i)
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
