The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
This vignette demonstrates how load the lemon
package
automatically enables pretty printing of data frames with knitr’s
kable
.
The beauty of defining the function
knit_print.data.frame
is that when working with R Notebooks
in R, the editor can output the data frame dynamically, while ensuring
that the knitted document also has the
First we load some data and show the top.
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
Now load lemon
and set the lemon_print
functions.
The same view is now nicely printed!
```{r caption="Data frame is now printed using `kable`.",render=lemon_print}
head(USArrests)
```
Murder | Assault | UrbanPop | Rape | |
---|---|---|---|---|
Alabama | 13.2 | 236 | 58 | 21.2 |
Alaska | 10.0 | 263 | 48 | 44.5 |
Arizona | 8.1 | 294 | 80 | 31.0 |
Arkansas | 8.8 | 190 | 50 | 19.5 |
California | 9.0 | 276 | 91 | 40.6 |
Colorado | 7.9 | 204 | 78 | 38.7 |
Notice how we specified kable
arguments directly as
chunk-options.
knitr uses a S3 generic function, knit_print
, to print
objects. Method dispatching in
R means that by defining a function, say
knit_print.data.frame
, calling knit_print(df)
will call our function if df
was a data frame.
To have knitr use our function when outputting a data frame, we
define the function knit_print.data.frame
(and similar for
data frames passed through dplyr functions, i.e tbl_df
and
grouped_df
).
Disabling the function is by usual chunk options,
render = normal_print
. check ?knit_print
.
Disabling the functions.
```{r normal_print,render=normal_print}
head(USArrests)
```
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
You can still ask for kable
.
```{r results='asis',render=normal_print}
kable(head(USArrests),caption='Normal `kable` usage.')
```
Murder | Assault | UrbanPop | Rape | |
---|---|---|---|---|
Alabama | 13.2 | 236 | 58 | 21.2 |
Alaska | 10.0 | 263 | 48 | 44.5 |
Arizona | 8.1 | 294 | 80 | 31.0 |
Arkansas | 8.8 | 190 | 50 | 19.5 |
California | 9.0 | 276 | 91 | 40.6 |
Colorado | 7.9 | 204 | 78 | 38.7 |
We have mentioned kable
a couple of times. That is
because the lemon_print
for data frames uses
kable
of the knitr package.
Some common arguments:
caption
: Table caption. See examples in
demonstration.align
: Vector of column alignments with
'l'
, 'c'
, and 'r'
. Or, a single
element, i.e. c('c','l','r') = 'clr')
.row.names
: A logical value indicating whether to
include row names.col.names
: A character vector of column names to be
used in the table.The second code block, when edited in RStudio, would look like this:
And, as
demonstrated, the rendered document has the data frame printed
nicely.
If we do not wish this behaviour, but still use
kable
,
Murder | Assault | UrbanPop | Rape | |
---|---|---|---|---|
Alabama | 13.2 | 236 | 58 | 21.2 |
Alaska | 10.0 | 263 | 48 | 44.5 |
Arizona | 8.1 | 294 | 80 | 31.0 |
Arkansas | 8.8 | 190 | 50 | 19.5 |
California | 9.0 | 276 | 91 | 40.6 |
Colorado | 7.9 | 204 | 78 | 38.7 |
RStudio would look like this:
Summaries are nicely formatted, but these require setting the S3
method for table
.
```{r kable.opts=list(caption='Summary tables are printed with some default options.')}
knit_print.table <- lemon_print
summary(USArrests)
```
Murder | Assault | UrbanPop | Rape |
---|---|---|---|
Min. : 0.800 | Min. : 45.0 | Min. :32.00 | Min. : 7.30 |
1st Qu.: 4.075 | 1st Qu.:109.0 | 1st Qu.:54.50 | 1st Qu.:15.07 |
Median : 7.250 | Median :159.0 | Median :66.00 | Median :20.10 |
Mean : 7.788 | Mean :170.8 | Mean :65.54 | Mean :21.23 |
3rd Qu.:11.250 | 3rd Qu.:249.0 | 3rd Qu.:77.75 | 3rd Qu.:26.18 |
Max. :17.400 | Max. :337.0 | Max. :91.00 | Max. :46.00 |
Cross-tabulations are however not nicely formatted.
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
## gear
## cyl 3 4 5
## 4 1 8 2
## 6 2 4 1
## 8 12 0 2
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
```{r dplyr,kable.opts=list(caption='Also works on `dplyr` objects.')}
mtcars %>% group_by(cyl) %>% summarise(mean(disp))
```
cyl | mean(disp) |
---|---|
4 | 105.1364 |
6 | 183.3143 |
8 | 353.1000 |
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.