KnitR/Code-Chunk
Einleitung
In dieser Lerneinheit geht es um den grundlegenden Begriff des Code-Chunks in R-Markdowndokumenten und KnitR
Definition - Code-Chunk
Ein "Code-Chunk" ist ein Abschnitt in einem R-Markdowndokument, der R-Code enthält und von KnitR ausgeführt wird. R-Markdown ist eine Mischung aus Markdown und R-Code, die es ermöglicht, dynamische Dokumente zu erzeugen, die sowohl Text als auch Code und dessen Ausgabe enthalten. Der Code wird beim "knittern" des Markdowndokumentes ausgeführt und dann können Grafiken oder Berechnungen in den Text einfließen.
KnitR ist das Paket, das diese Dokumente verarbeitet und den R-Code ausführt.
Struktur des Code-Chunks
Ein Code-Chunk wird durch drei Backticks (```) eingeleitet und beendet. Direkt nach den öffnenden Backticks steht ein {r}, gefolgt von optionalen Chunk-Optionen.
Einführendes Beispiel
In dem folgenden Code-Chunk werden zwei Variablen und jeweils die Wert 5 und 10 zugewiesen und dann die Summe der beiden Zahlen in der Variablen gespeichert
```{r}
# Dies ist ein einfacher Code-Chunk
x <- 5
y <- 10
z <- x + y
```
Die Ausgabe kann dann in dem nachfolgenden Text genutzt werden.
Wenn man die Summe von `r x` und `r y` berechnet, erhält man als Ergebnis `r z`.
Ein Variableninhalt von myvar kann im Text mit einfachen Backticks und "r" als Programmiersprachenbezeichung mit `r myvar` erscheinen.
Wenn man das Dokument geknittert hat ersetzt KnitR im Beispiel
`r x`durch 5`r y`durch 10`r z`durch 15
und man erhält in der Ausgabe.
Wenn man die Summe von 5 und 10 berechnet, erhält man als Ergebnis 15.
Chunk-Optionen
Chunk-Optionen steuern das Verhalten des Code-Chunks. Hier sind einige häufig verwendete Optionen:
echo: Gibt an, ob der Code im Dokument angezeigt wird (TRUEoderFALSE).results: Steuert, wie die Ausgabe des Codes angezeigt wird (markup,asis,hold,hide).eval: Gibt an, ob der Code ausgeführt wird (TRUEoderFALSE).message: Gibt an, ob Meldungen angezeigt werden (TRUEoderFALSE).warning: Gibt an, ob Warnungen angezeigt werden (TRUEoderFALSE).
Bedingte Ausgaben
Die Ausgabe im Text im oft von vorherigen Berechnung und importierten Daten aus Messreihen abhängig. Das folgende Beispiel zeigt, die textliche Veränderung in Abhängigkeit von einem Messwert.
```{r}
messwert <- 5
grenzwert <- 10
kritisch <- 20
ausgabe <- ""
if (messwert < grenzwert) {
ausgabe <- "ist alles in Ordnung"
} else {
if (messwert < kritisch) {
ausgabe <- "liegt eine Grenzwertüberschreitung vor."
} else {
ausgabe <- "liegt kritische Grenzwertüberschreitung vor. Ein Zugangsverbot wird ausgesprochen."
}
}
```
Nun kann auch ein dynamische Ausgabe im Text erfolgen.
Bei einem Messwert `r messwert` `r ausgabe`. Dabei ist der aktuelle Grenzwert `r grenzwert` und ab einem Messwert `r kritisch` ist extreme Vorsicht geboten.
Mit der obigen Setzung des Messwertes wäre die Ausgabe nach dem "knittern" wie folgt:
Bei einem Messwert 5 ist alles in Ordnung. Dabei ist der aktuelle Grenzwert 10 und ab einem Messwert 20 ist extreme Vorsicht geboten.
Aufgaben
- Erzeugen Sie für den obigen Anwendungsfall der bedingten Ausgabe eine Funktion die als Parameter den Messwert, den Grenzwert und den kritischen Grenzwert erhält und dann die gewünscht Ausgaben ausgibt.
```{r}
messwert <- 5
grenzwert <- 10
kritisch <- 20
ausgabe_grenzwert <- function(pMesswert,pGrenzwert,pKritisch) {
ausgabe <- ...
### Rückgabewert ist die Textausgabe
return(ausgabe)
}
```
- Wählen Sie Ihre eigenen Daten als Grundlage und wenden Sie die bedingte Ausgabe auf Ihre Auswertung des Datensatzes an. Dabei könnte sich die bedingte Ausgabe für die Daten
- Grenzwertüberschreitungen,
- die Signifikanz eines statischen Tests,
- Fuzzylogik und deren Auswertung,
- die Ausgabe eines Assoziators
- ...
- beziehen.