knitr

knitr: A General-Purpose Package for Dynamic Report Generation in R. This package provides a general-purpose tool for dynamic report generation in R, which can be used to deal with any type of (plain text) files, including Sweave, HTML, Markdown, reStructuredText, AsciiDoc, and Textile. R code is evaluated as if it were copied and pasted in an R terminal thanks to the evaluate package (e.g., we do not need to explicitly print() plots from ggplot2 or lattice). R code can be reformatted by the formatR package so that long lines are automatically wrapped, with indent and spaces added, and comments preserved. A simple caching mechanism is provided to cache results from computations for the first time and the computations will be skipped the next time. Almost all common graphics devices, including those in base R and add-on packages like Cairo, cairoDevice and tikzDevice, are built-in with this package and it is straightforward to switch between devices without writing any special functions. The width and height as well as alignment of plots in the output document can be specified in chunk options (the size of plots for graphics devices is also supported). Multiple plots can be recorded in a single code chunk, and it is also allowed to rearrange plots to the end of a chunk or just keep the last plot. Warnings, messages and errors are written in the output document by default (can be turned off). The large collection of hooks in this package makes it possible for the user to control almost everything in the R code input and output. Hooks can be used either to format the output or to run R code fragments before or after a code chunk. The language in code chunks is not restricted to R (there is simple support to Python and shell scripts, etc). Many features are borrowed from or inspired by Sweave, cacheSweave, pgfSweave, brew and decumar.