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
Press to
generate
document

Inser
tags

Chunk Tags !
Resultat
Your turn
Lege eine neues R Markdown
Dokument an. Nutze den
Datensatz anscombe. Berechne
eine lineare Einfachregression
von y1 auf x.!
Optionen
von
Markdown
http://www.rstudio.com/ide/docs/authoring/using_markdown
Your turn
Erweitere das R Dokument um
Überschriften, Zwischenstriche,
eine Aufzählung und eine
Tabelle. !
In-Line R Code
R Code kann durch andere Tags direkt
im Fließtext ausgewertet werden.

Das Ergebnis ist `r 1+5`!
Your turn
Erstelle folgende Zeile!
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)!
```!
Your turn
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!

Smiley
Weitere chunk options
tidy

eval

Mehr ...

(Logisch). Soll der R-Code
gesäubert werden
(Einrückungen etc.)?
(Logisch). Soll der Code
ausgeführt werden?

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!!
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.
http://johnmacfarlane.net/pandoc/index.html
Von Markdown zu Word/ODT mit Pandoc & knitr

library(knitr)!
!
pandoc('file.md', 'docx')
pandoc(‘file.md', 'odt')

# MS Word!
# OpenDocument!

http://yihui.name/knitr/demo/pandoc/
Let‘s
get
styled!

Der Workflow
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
Press to
generate
PDF

Insert
tags

R chunk
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

R Knitr - generating reports

  • 1.
    Reports erstellen Mark Heckmann University ofBremen, Germany www.markheckmann.de Version Januar, 2014 © CC BY-NC 2.0 DE
  • 2.
    Im R Buch EineEinführung in knitr finden Sie in meinem R Buch im Kapitel Ergebnisberichte erstellen
  • 3.
  • 4.
  • 5.
    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 ```
  • 6.
    Neues R MarkdownDoc(.Rmd) Neues .Rmd
  • 7.
  • 8.
  • 9.
    Your turn Lege eineneues R Markdown Dokument an. Nutze den Datensatz anscombe. Berechne eine lineare Einfachregression von y1 auf x.!
  • 10.
  • 12.
  • 13.
    Your turn Erweitere dasR Dokument um Überschriften, Zwischenstriche, eine Aufzählung und eine Tabelle. !
  • 14.
    In-Line R Code RCode kann durch andere Tags direkt im Fließtext ausgewertet werden. Das Ergebnis ist `r 1+5`!
  • 15.
  • 16.
    Zwei Arten vonOptionen 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
  • 17.
    Chunk Optionen echo: sollder R-Code angezeigt werden? ```{r echo=FALSE}! 1+1! ```!
  • 18.
    Chunk Optionen fig.width: Breitedes 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
  • 19.
    Chunk Optionen comment: Zeichen vorder R-Ausgabe ! ```{r comment=“”}! !plot(1:10, 1:10)! ```!
  • 20.
    Chunk Optionen message: Infos zumLaden des Pakets anzeigen? ! ```{r message=FALSE}! library(car)! ```!
  • 21.
    Your turn Erstelle einenScatterplot 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! Smiley
  • 22.
    Weitere chunk options tidy eval Mehr... (Logisch). Soll der R-Code gesäubert werden (Einrückungen etc.)? (Logisch). Soll der Code ausgeführt werden? http://yihui.name/knitr/ options
  • 23.
    Global chunk options DieChunk 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)!
  • 24.
    Global chunk options DieChunk 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)!
  • 25.
    (Global) package options Diepackage settings können über die Funktion opts_knit$set() verändert werden !opts_knit$set(width=120)! ! Mehr: http://yihui.name/knitr/options
  • 26.
    Ich will aber einWord Dokument haben!!
  • 27.
    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. http://johnmacfarlane.net/pandoc/index.html
  • 28.
    Von Markdown zuWord/ODT mit Pandoc & knitr library(knitr)! ! pandoc('file.md', 'docx') pandoc(‘file.md', 'odt') # MS Word! # OpenDocument! http://yihui.name/knitr/demo/pandoc/
  • 29.
  • 30.
    Neuer Look fürmein 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
  • 31.
    Das CSS ändern Dieeinfachste 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.!
  • 32.
    Alternative: CSS-Datei einbinden Umeine 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') !
  • 33.
    Alternative: CSS-Datei einbinden Willhä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/
  • 34.
  • 35.
  • 36.
    Select knitr RStudio sagen,dass es knitr nutzen soll, um das PDF herzustellen
  • 37.
    Neues R SweaveDokument (.Rnw) Neues .Rnw
  • 38.
    Press to generate PDF Insert tags R chunk tags! Achtung: eine LaTeX engine muss installiert sein (z.B. MikTeX, MacTeX)
  • 39.
  • 40.
    Die Chunk Optionssind (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/
  • 41.
    Ein theme anwenden(nur für PDFs) <<echo=FALSE>>=! opts_knit$set(out.format = "latex")! knit_theme$set("autumn")! @! knit_theme$get() # alle themes!
  • 42.