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 `options` and `inline`; see the references below.

### 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

[Package knitr version 1.22 Index]