CRAN Task View: Reproducible Research

The goal of reproducible research is to tie specific instructions to data analysis and experimental data so that scholarship can be recreated, better understood and verified. Packages in R for this purpose can be split into groups for: literate programming, package reproducibility, code/data formatting tools, format convertors, and object caching.

Literate Programming

The primary way that R facilitates reproducible research is using a document that is a combination of content and data analysis code. The
Sweave
function (in the base R utils package) and the
knitr
package can be used to blend the subject matter and R code so that a single document defines the content and the analysis. The
brew
and
R.rsp
packages contain alternative approaches to embedding R code into various markups.

The resources for literate programming are best organized by the document type/markup language:

LaTeX

Both
Sweave
and
knitr
can process LaTeX files.
lazyWeave
can create LaTeX documents from scratch.

Miscellaneous Tools:
htmltools
has various tools for working with HTML.
tufterhandout
for creating Tufte-style handouts

Markdown

The
knitr
package can process markdown files without assistance. The packages
markdown
and
rmarkdown
have general tools for working with documents in this format.
lazyWeave
can create markdown format documents from scratch. Also, the
ascii
package can write R objects to the
AsciiDoc
format.

Miscellaneous Tools

Package Reproducibility

R also has tools for ensuring that specific packages versions can be required for analyses.
checkpoint,
rbundler
and
packrat
install packages required for a project to a local archive as they existed at a specified point in time. This allows specific package versions to be maintained over time and different users. The
miniCRAN
package facilitates the creation of local CRAN-like repositories.

Formatting Tools

Format Convertors

pander
can be used for rendering R objects into
Pandoc's
markdown.
knitr
has the function
pandoc
that can call an installed version of
Pandoc
to convert documents between formats such as Markdown, HTML, LaTeX, PDF and Word.
tth
facilitates TeX to HTML/MathML conversions.

Object Caching Packages

When using
Sweave
and
knitr
it can be advantageous to
cache
the results of time consuming code chunks if the document will be re-processed (i.e. during debugging).
knitr
facilitates object caching and the Bioconductor package
weaver
can be used with
Sweave.

Non-literate programming packages to facilitating caching/archiving are
R.cache
and
archivist.