Reports erstellen
Mark Heckmann University of Bremen, Germany
www.markheckmann.de
Version Januar, 2014
© CC BY-NC 2.0 DE
Im R Buch
Eine Einführung in knitr finden Sie in meinem R Buch im Kapitel Ergebnisberichte erstellen
out now!
Creating reports in R
+ RStudio
Using R markdown
• Markdown is a lightweight language to structure a document
• Install knitr package to start • R Markdown (Rmd) = R + Markdown • R code chunks can be directly included • Include R code between the following
tags
```{r} # Some R Code here ```
Neues R Markdown Doc(.Rmd)
Neues .Rmd
Chunk Tags !
Press to generate document
Insert tags
Resultat
Lege eine neues R Markdown Dokument an. Nutze den
Datensatz anscombe. Berechne eine lineare Einfachregression
von y1 auf x.!
Your turn
Optionen von Markdown
http://www.rstudio.com/ide/docs/authoring/using_markdown
Erweitere das R Dokument um Überschriften, Zwischenstriche,
eine Aufzählung und eine Tabelle. !
Your turn
In-Line R Code
Das Ergebnis ist `r 1+5`!
R Code kann durch andere Tags direkt im Fließtext ausgewertet werden.
Erstelle folgende Zeile!
Your turn
Zwei Arten von Optionen
Chunk options Betreffen einzelnen R Chunk, können sich für jeden Chunk unterscheiden (z.B. Größe der ausgegeben Grafiken)
Package options Betreffen Grundlegendes des knitr Pakets (Ausgabebreite des Codes) http://yihui.name/knitr/options
Chunk Optionen
echo: soll der R-Code angezeigt werden?
```{r echo=FALSE}!1+1!```!
Chunk Optionen
fig.width: Breite des Plots in inch fig.width: Höhe des Plots in inch !```{r fig.width=10, fig.height=5}!plot(1:10, 1:10)!```! Argumente
werden durch ein Komma getrennt
Chunk Optionen
comment: Zeichen vor der R-Ausgabe !```{r comment=“”}!!plot(1:10, 1:10)!```!
Chunk Optionen
message: Infos zum Laden des Pakets anzeigen?
!
```{r message=FALSE}!library(car)!```!
Erstelle einen Scatterplot der Variablen x1 und y1 aus dem Datensatz anscombe. Berechne eine Regression. Achte darauf, dass der R-Code im Output nicht sichtbar ist und die Größe des Plots angepasst wird. Ersetze das Zeichen vor der R-Ausgabe durch einen Smiley!
Your turn
Smiley
Weitere chunk options
tidy (Logisch). Soll der R-Code gesäubert werden (Einrückungen etc.)?
eval (Logisch). Soll der Code ausgeführt werden?
Mehr ...
http://yihui.name/knitr/options
Global chunk options
Die Chunk settings können auch global, d.h. für alle chunks auf einmal verändert werde.
!opts_chunk$set! !opts_chunk$set(comment=NA, !! ! ! ! ! ! ! ! ! !tidy=FALSE)!
Global chunk options
Die Chunk settings können auch global, d.h. für alle chunks auf einmal verändert werde.
!opts_chunk$set! !opts_chunk$set(comment=NA, !! ! ! ! ! ! ! ! ! !tidy=FALSE)!
(Global) package options
Die package settings können über die Funktion opts_knit$set() verändert werden
!opts_knit$set(width=120)!!Mehr: http://yihui.name/knitr/options
Ich will aber
ein Word
Dokument
haben!!
http://johnmacfarlane.net/pandoc/index.html
Pandoc ist ein Programm, das ein Markup Format in ein anderes überführt. Pandoc unterstützt sehr viele Formate: PDF, HTML, DOCX, TeX, ODT, Markdown usw.
Von Markdown zu Word/ODT mit Pandoc & knitr
http://yihui.name/knitr/demo/pandoc/
library(knitr)!!pandoc('file.md', 'docx') # MS Word!pandoc(‘file.md', 'odt') # OpenDocument!
Der Workflow Let‘s get styled!
Neuer Look für mein HTML
Der Look der erzeugten HTML Datei wird über CSS festgelegt, z.B.
h1 { ! font-size: 2.2em; !}!!
Das knitr Standard-CSS ist aber eher funktional als ästhetisch
Das CSS ändern
Die einfachste Variante: An den Anfang einer Markdown Datei das neue CSS einzufügen (innerhalb von style Tags).
<style>!h1 { ! !font-size:2.2em; !! !color:red;!}!</style>!!
Funktioniert, ist aber ein wenig clumsy.!
Alternative: CSS-Datei einbinden
Um eine HTML Datei mit einer eigenen CSS Datei (custom.css) zu stylen kann das durch das Drücken des knitr Knopfes entstandenen Markdown Datei erneut mit dem Zusatz unsere CSS Datei zu nutzen, in HTML verwandelt werden
require(markdown)!!markdownToHTML('file.md', ’file.html', !! ! ! ! ! stylesheet='custom.css') !
Alternative: CSS-Datei einbinden
Will häufiger eine bestimmte CSS Datei nutzen, kann dies für die die Dauer einer R Session durch Ausfühtung folgenden Befehls umgestellt werden.
options(rstudio.markdownToHTML = ! function(inputFile, outputFile) { ! require(markdown)! markdownToHTML(inputFile, outputFile, !! ! ! ! ! stylesheet='custom.css') !
}!) !
http://blogs.cetis.ac.uk/adam/2013/10/25/changing-style-knitr-and-markdown-in-rstudio/
Vorher - Nachher
+
Select knitr
RStudio sagen, dass es knitr nutzen soll, um das
PDF herzustellen
Neues R Sweave Dokument (.Rnw)
Neues .Rnw
R chunk tags !
Press to generate PDF
Insert tags
Achtung: eine LaTeX engine muss installiert sein
(z.B. MikTeX, MacTeX)
Resultat
Die Chunk Options sind (fast) gleich
Die Chunk Options für .Rmd und .Rnw sind weitgehend identisch. Es gibt einige wenige Optionen die für jedes Format spezifisch sind: http://yihui.name/knitr/options
http://blogs.cetis.ac.uk/adam/2013/10/25/changing-style-knitr-and-markdown-in-rstudio/
Ein theme anwenden (nur für PDFs)
<<echo=FALSE>>=!opts_knit$set(out.format = "latex")!knit_theme$set("autumn")!@!
knit_theme$get() # alle themes!
Beispiel Layout aus meinem Buch