Reproducible Research = LaTeX + R + Jabref

Reading time ~5 minutes

[en]The concept of reproducible research with it’s core idea of being able to reproduce all figures, tables, and results in a manuscript is fascinating. The best way to implement this is by using R in combination with latex. However, it takes a while to get everything into place. There is some information about sweave on the authors’ webpage and  several others give great examples (here, and here).  However, these do not include citations, and as someone who needs Umlauts I also spent some time to find out how to include these. In the following I describe my final set of files that can be used to write small and not so small tutorials in statistics. All of which look like this example. Any comments are much aprecciated:

Overview

Stuff I installed: Texshop and Jabref. For both I set the standard encoding to UTF8.

Four files need to be in the same folder (“/temp/):

  1. the master-file that contains the text, R-code-chunks, and citations

  2. the bibtex-file that contains the references in bibtex-format

  3. Sweave.sty

  4. the R-skript that starts the sweave command and compiles the resulting Latex-document using pdflatex.

You can download the whole folder here.

The master file:

My Master-File contains

> > \documentclass[a4paper, 12pt, titlepage]{article} > > > > %\usepackage[ngerman]{babel} %delete comment for german > > > > \usepackage[pdftex]{graphicx} > > > > \usepackage[utf8]{inputenc} > > > > \usepackage{hyperref} > > > > \usepackage{Sweave} > > > > \usepackage[hyper]{apacite} > > > > \bibliographystyle{apacite} > > > > % > > > > %Begin Document > > > > % > > > > \begin{document} > > > > \title{A reproducible manuskript with Text (\LaTeX), Analysis (R), and References (Bibtex)} > > > > \author{Gerrit Hirschfeld \\ gerrit.hirschfeld@gmail.com} > > > > \date{\today} % Delete this line to display the current date > > > > \maketitle > > > > \tableofcontents > > > > \newpage{} > > > > \listoffigures > > > > \newpage{} > > > > \section{examples} > > > > \subsection{R-code chunk} > > > > \begin{figure}[htbp] > > > > \begin{center} > > > > <<fig=T>>= > > > > par(bty="l") > > > > x <- 1:10 > > > > y <- rnorm(x) > > > > plot(x,y) > > > > @ > > > > \caption{just random data} > > > > \end{center} > > > > \end{figure} > > > > \subsection{Citations} > > > > Some online-research \cite{Hirschfeld2010b, Thielsch2010} and psycholinguistics \cite{Hirschfeld2008, Hirschfeld2010, Hirschfeld2010a}. > > > > \newpage{} > > > > \bibliography{references} > > > > \end{document} > >

The Bibtex-file:

The Bibtex-file is generated with Jabref and contains the references that are used in the manuskript.

The R-code file:

The R-Code file looks like this.

setwd("/temp/")
Sweave("example.Snw")
system("/usr/texbin/pdflatex example.tex")
system("/usr/texbin/bibtex example")
system("/usr/texbin/pdflatex example.tex")
system("/usr/texbin/pdflatex example.tex")

This essentially only sweaves the master file “example.Snw”, i.e. it evaluates the code-chunks and writes the results to the file example.tex. The next lines of code repeatedly compile this tex-file, as this is necessary.[/en]

[de]Das Konzept der reproduzierbaren Forschung mit der Kernidee, dass alle Figuren, Tabellen und Ergebnisse im Manuskript reproduziert werden können, ist faszinierend. Die beste Idee, um das Konzept zu implementieren, ist durch die Benutzung von R in Kombination mit Latex. Es braucht allerdings einige Zeit, um alles an den richtigen Platz zu bekommen. Es gibt einige Informationen über sweave auf der webpage des Autors und andere Seiten geben gute Beispiele (here und here).  Diese beinhalten allerdings keine Zitierungen und als jemand, der auch mit Umlauten arbeitet, brauchte ich einige Zeit, um herauszufinden wie das funktioniert. Im folgenden beschreibe ich mein final set von Dateien, welches benutzt werden kann um  kleine und weniger kleine Statistikübungen zu schreiben. Diese sehen alle aus wie this example. Jegliche Kommentare sind gerne gesehen:

Überblick

Was ich vorher installiert habe: Texshop und Jabref. Für beide habe ich die Standardkodierung auf UTF8 gesetzt.

Vier Dateien müssen im gleichen Ordner (“/temp/) sein:

  1. die Masterdatei, welche den Text, R-code-chunks und Zitierungen enthält

  2. der Bibtexdatei, welche die Referenzen im Bibtex-Format enthält

  3. Sweave.sty

  4. das R-Skript, welches das sweave-Kommando startet und das resultierende Latex-Dokument unter Benutzung von pdflatex erstellt

Den gesamten Ordner kannst du here herunterladen.

Die Masterdatei:

Meine Masterdatei beinhaltet

> > \documentclass[a4paper, 12pt, titlepage]{article} > > > > %\usepackage[ngerman]{babel} %delete comment for german > > > > \usepackage[pdftex]{graphicx} > > > > \usepackage[utf8]{inputenc} > > > > \usepackage{hyperref} > > > > \usepackage{Sweave} > > > > \usepackage[hyper]{apacite} > > > > \bibliographystyle{apacite} > > > > % > > > > %Begin Document > > > > % > > > > \begin{document} > > > > \title{A reproducible manuskript with Text (\LaTeX), Analysis (R), and References (Bibtex)} > > > > \author{Gerrit Hirschfeld \\ gerrit.hirschfeld@gmail.com} > > > > \date{\today} % Delete this line to display the current date > > > > \maketitle > > > > \tableofcontents > > > > \newpage{} > > > > \listoffigures > > > > \newpage{} > > > > \section{examples} > > > > \subsection{R-code chunk} > > > > \begin{figure}[htbp] > > > > \begin{center} > > > > <<fig=T>>= > > > > par(bty="l") > > > > x <- 1:10 > > > > y <- rnorm(x) > > > > plot(x,y) > > > > @ > > > > \caption{just random data} > > > > \end{center} > > > > \end{figure} > > > > \subsection{Citations} > > > > Some online-research \cite{Hirschfeld2010b, Thielsch2010} and psycholinguistics \cite{Hirschfeld2008, Hirschfeld2010, Hirschfeld2010a}. > > > > \newpage{} > > > > \bibliography{references} > > > > \end{document} > >

Die Bibtexdatei:

Die Bibtexdatei wurde mit Jabref generiert und beinhaltet die Referenzen, die im Manuskript genutzt werden.

Der R-code :

Die R-Code-datei sieht folgendermaßen aus.

setwd("/temp/")
Sweave("example.Snw")
system("/usr/texbin/pdflatex example.tex")
system("/usr/texbin/bibtex example")
system("/usr/texbin/pdflatex example.tex")
system("/usr/texbin/pdflatex example.tex")

Im Wesentlichen wird dadurch nur die Masterdatei “example.Snw” gesweaved, die Code-chunks werden bewertet und die Ergebnisse werden in die Datei example.tex geschrieben. Die nächsten Zeilen des Codes erstellen wiederholt diese tex-Datei, da dies notwendig ist.[/de]

The world is flat F(1,18) = 39.200; p = .335 - or p < .01 or p <.001? - Check your stats!

A reviewers dream has come true. The new __statcheck__-package for [R](r-project.org) automagically checks the accurate __reporting__ of ...… Continue reading

Publication-lists-4-Your-Website

Published on June 19, 2015

Relaunch on Jekyll

Published on June 04, 2015