R Markdown is an R package that allows to convert .Rmd
(R Markdown) files to PDF. An .Rmd
file is a Markdown file with integrated R code chunks. When the .Rmd
file gets processed by R Markdown, these R code chunks get executed, and their output is incorporated in the output PDF.
In the following, it is explained how R Markdown works internally, including its two main components knitr and Pandoc.
Overview
knitr
knitr is an R package (knitr
). It converts one of the following input file formats
.Rnw
: LaTeX file with integrated R code chunks.Rhtml
: HTML file with integrated R code chunks.Rmd
: Markdown file with integrated R code chunks (R Markdown file)
to a .tex
, .html
, or .md
output file, respectively (other input and output formats and combinations of input to output formats are possible).
The main function is knit
.
+-----------+
.Rnw | | .tex
.Rhtml ----> | knitr | ----> .html
.Rmd | | .md
+-----------+
Example:
knit("foo.Rnw")
Produces foo.tex
.
R Markdown
R Markdown is an R package (rmarkdown
). It combines knitr and Pandoc. Pandoc is a general-purpose Markdown converter that allows to convert Markdown to many output formats.
In particular, R Markdown restricts the input format for knitr to .Rmd
(R Markdown), uses knitr to convert this to an .md
(Pandoc-flavoured Markdown) file, and finally uses Pandoc to convert this .md
file to a .pdf
, .tex
, or .html
file (other output formats are possible).
The main function is render
.
+-----------+ +------------+
| | | | .pdf
.Rmd ----> | knitr | ----> .md ----> | Pandoc | ----> .tex
| | | | .html
+-----------+ +------------+
Example:
render("foo.Rmd")
render("foo.Rmd", "pdf_document")
Produces foo.html
and foo.pdf
, respectively.