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 (TRUE oder FALSE).
  • results: Steuert, wie die Ausgabe des Codes angezeigt wird (markup, asis, hold, hide).
  • eval: Gibt an, ob der Code ausgeführt wird (TRUE oder FALSE).
  • message: Gibt an, ob Meldungen angezeigt werden (TRUE oder FALSE).
  • warning: Gibt an, ob Warnungen angezeigt werden (TRUE oder FALSE).

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.

Siehe