Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to render table from htmlTable package in pdf_document in rmarkdown?

Tags:

r

pdf

r-markdown

Within rmarkdown (in RStudio) I use htmlTable package to generate nice looking tables in my html documents. Now I want the same result when rendering a pdf document. The tables aren't rendered properly. How can I let rmarkdown generate tables in my pdf document the same way it does in my html's?

This is a working example of a .Rmd file with a table:

---
title: "test"
output: pdf_document
---

```{r results="asis"}
library(htmlTable)
c1 <- c("test1","test1","test2","test2")
c2 <- c(1,2,3,4)
data_object <- as.data.frame(cbind(c1,c2))
names(data_object) <- c("test","test2")
print(htmlTable(data_object))
```

Click knit pdf in RStudio.

The result in my pdf-document is:

test
library(htmlTable)
c1 <- c("test1","test1","test2","test2")
c2 <- c(1,2,3,4)
data_object <- as.data.frame(cbind(c1,c2))
names(data_object) <- c("test","test2")
print(htmlTable(data_object))
test
test2
1
1
1
2
1
2
3
2
3
4
2
4
1

The result (of the table part) should be:

enter image description here

Does anyone have an idea about how to solve this?

like image 427
rdatasculptor Avatar asked Oct 16 '15 11:10

rdatasculptor


1 Answers

If you want PDF output, you should transform the R object to

  • LaTeX or
  • markdown

The prior has a lot more formatting options, but the latter is a lot simpler and can be converted further to either HTML or PDF (besides a bunch of other formats). So instead of the htmlTable package, you might want to give a try to kable or the more robust pander package:

---
title: "test"
output: pdf_document
---

```{r}
library(pander)
data_object <- data.frame(test = paste0('test', 1:4), test2 = 1:4)
pander(data_object)
```

Resulting in the following PDF after calling rmarkdown::render on the above document:

enter image description here

like image 150
daroczig Avatar answered Sep 24 '22 18:09

daroczig