Automatic output format in Rmarkdown

I am writing a Rmarkdown document with plenty of tables, and I want them in a decent format, e.g. kable. However I don’t want to format them one by one. For example, I have created the following data frame in dplyr.

library(dplyr)
data("iris")

iris %>% group_by(Species) %>%
summarise(n = n()) %>%
arrange(desc(n))
## # A tibble: 3 x 2
##      Species     n
##       <fctr> <int>
## 1     setosa    50
## 2 versicolor    50
## 3  virginica    50

One solution to the output format of this data frame would be to name it as an object in R, and then give it a format by using the kable function.

t1 <- iris %>% group_by(Species) %>%
summarise(n = n()) %>%
arrange(desc(n))

knitr::kable(t1)

However, if your document has hundreds of these queries and you need a faster way to compile the document, while keeping the kable style automatically, avoiding giving a name to the data frame and even avoiding to call the kable function over that name, you can use the printr package. Just add the following piece of code inside a chunk at the beginning of your document and voilá.

library(printr)

Now, all of your data frames will have a decent style, and you do not need to worry about this issue. For example, I have knitted a presentation by using printr and the first code in this post, and this is the result:

library(printr)

iris %>% group_by(Species) %>%
summarise(n = n()) %>%
arrange(desc(n))
Species n
setosa 50
versicolor 50
virginica 50