knit_print {knitr} | R Documentation |
A custom printing function
Description
The S3 generic function knit_print
is the default printing function in
knitr. The chunk option render
uses this function by default.
The main purpose of this S3 generic function is to customize printing of R
objects in code chunks. We can fall back to the normal printing behavior by
setting the chunk option render = normal_print
.
Usage
knit_print(x, ...)
normal_print(x, ...)
Arguments
x |
An R object to be printed |
... |
Additional arguments passed to the S3 method. Currently ignored,
except two optional arguments |
Details
Users can write custom methods based on this generic function. For example,
if we want to print all data frames as tables in the output, we can define a
method knit_print.data.frame
that turns a data.frame into a table (the
implementation may use other R packages or functions, e.g. xtable or
kable()
).
Value
The value returned from the print method should be a character vector
or can be converted to a character value. You can wrap the value in
asis_output()
so that knitr writes the character value
as is in the output.
Note
It is recommended to leave a ...
argument in your method, to
allow future changes of the knit_print()
API without breaking your
method.
References
See vignette('knit_print', package = 'knitr')
.
Examples
library(knitr)
# write tables for data frames
knit_print.data.frame = function(x, ...) {
res = paste(c("", "", kable(x, output = FALSE)), collapse = "\n")
asis_output(res)
}
# register the method
registerS3method("knit_print", "data.frame", knit_print.data.frame)
# after you define and register the above method, data frames will be printed
# as tables in knitr, which is different with the default print() behavior