R Knitr - generating reports

42
Reports erstellen Mark Heckmann University of Bremen, Germany www.markheckmann.de Version Januar, 2014 © CC BY-NC 2.0 DE

description

Reports erstellen mit dem knitr Paket

Transcript of R Knitr - generating reports

Page 1: R Knitr - generating reports

Reports erstellen

Mark Heckmann University of Bremen, Germany

www.markheckmann.de

Version Januar, 2014

© CC BY-NC 2.0 DE

Page 2: R Knitr - generating reports

Im R Buch

Eine Einführung in knitr finden Sie in meinem R Buch im Kapitel Ergebnisberichte erstellen

Page 3: R Knitr - generating reports

out now!

Page 4: R Knitr - generating reports

Creating reports in R

+ RStudio

Page 5: R Knitr - generating reports

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 ```

Page 6: R Knitr - generating reports

Neues R Markdown Doc(.Rmd)

Neues .Rmd

Page 7: R Knitr - generating reports

Chunk Tags !

Press to generate document

Insert tags

Page 8: R Knitr - generating reports

Resultat

Page 9: R Knitr - generating reports

Lege eine neues R Markdown Dokument an. Nutze den

Datensatz anscombe. Berechne eine lineare Einfachregression

von y1 auf x.!

Your turn

Page 10: R Knitr - generating reports

Optionen von Markdown

Page 11: R Knitr - generating reports
Page 12: R Knitr - generating reports

http://www.rstudio.com/ide/docs/authoring/using_markdown

Page 13: R Knitr - generating reports

Erweitere das R Dokument um Überschriften, Zwischenstriche,

eine Aufzählung und eine Tabelle. !

Your turn

Page 14: R Knitr - generating reports

In-Line R Code

Das Ergebnis ist `r 1+5`!

R Code kann durch andere Tags direkt im Fließtext ausgewertet werden.

Page 15: R Knitr - generating reports

Erstelle folgende Zeile!

Your turn

Page 16: R Knitr - generating reports

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

Page 17: R Knitr - generating reports

Chunk Optionen

echo: soll der R-Code angezeigt werden?

```{r echo=FALSE}!1+1!```!

Page 18: R Knitr - generating reports

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

Page 19: R Knitr - generating reports

Chunk Optionen

comment: Zeichen vor der R-Ausgabe !```{r comment=“”}!!plot(1:10, 1:10)!```!

Page 20: R Knitr - generating reports

Chunk Optionen

message: Infos zum Laden des Pakets anzeigen?

!

```{r message=FALSE}!library(car)!```!

Page 21: R Knitr - generating reports

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

Page 22: R Knitr - generating reports

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

Page 23: R Knitr - generating reports

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)!

Page 24: R Knitr - generating reports

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)!

Page 25: R Knitr - generating reports

(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

Page 26: R Knitr - generating reports

Ich will aber

ein Word

Dokument

haben!!

Page 27: R Knitr - generating reports

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.

Page 28: R Knitr - generating reports

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!

Page 29: R Knitr - generating reports

Der Workflow Let‘s get styled!

Page 30: R Knitr - generating reports

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

Page 31: R Knitr - generating reports

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.!

Page 32: R Knitr - generating reports

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') !

Page 33: R Knitr - generating reports

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/

Page 34: R Knitr - generating reports

Vorher - Nachher

Page 35: R Knitr - generating reports

+

Page 36: R Knitr - generating reports

Select knitr

RStudio sagen, dass es knitr nutzen soll, um das

PDF herzustellen

Page 37: R Knitr - generating reports

Neues R Sweave Dokument (.Rnw)

Neues .Rnw

Page 38: R Knitr - generating reports

R chunk tags !

Press to generate PDF

Insert tags

Achtung: eine LaTeX engine muss installiert sein

(z.B. MikTeX, MacTeX)

Page 39: R Knitr - generating reports

Resultat

Page 40: R Knitr - generating reports

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/

Page 41: R Knitr - generating reports

Ein theme anwenden (nur für PDFs)

<<echo=FALSE>>=!opts_knit$set(out.format = "latex")!knit_theme$set("autumn")!@!

knit_theme$get() # alle themes!

Page 42: R Knitr - generating reports

Beispiel Layout aus meinem Buch