R Knitr - generating reports

Post on 26-Jan-2015

118 views 2 download

description

Reports erstellen mit dem knitr Paket

Transcript of R Knitr - generating reports

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