3.8 Der Pipe-Operator

Achte darauf, dass du für diese Einheit das Paket tidyverse geladen haben solltest (library(tidyverse)).

Häufig führen wir nur eine Funktion aus. Was passiert allerdings, wenn wir mehrere Funktionen gleichzeitig ausführen müssen? Hier ein Beispiel: Stell Dir vor, du möchtest aus einem Vektor (c(4, 5, 6)) den Mittelwert berechnen, aus dem Mittelwert anschließend die Wurzel ziehen und diesen Wert mit der Zahl 5 addieren. Dies wäre ein möglicher Lösungsweg:

## [1] 7.236068

Das sieht nicht nur kompliziert aus, es ist auch kompliziert. Es ist schwer zu erkennen, welche Klammer zu welcher Funktion gehört. Alternativ könnten wir die Daten in Variablen speichern:

## [1] 7.236068

Die Lösung ist bereits eleganter aber immer noch perfekt, da wir Variablen erstellen, die wir später gar nicht mehr benötigen. Wir möchten nur das Ergebnis wissen. Eine Alternative, dieses Problem zu lösen, ist der Pipe-Operator. Das Problem von vorhin können wir durch diesen Operator folgendermaßen lösen:

## [1] 7.236068

Was passiert hier? Die Idee ist folgende: Jede Funktion nimmt Daten auf, verarbeitet diese und gibt diese weiter. Eine Analogie wären erneut Fabriken. Die erste Fabrik fällt Holz und fertigt aus diesem Holz Bretter an. Holz ist der Input der Fabrik, Bretter der Output. Diese Bretter werden nun an die nächste Fabrik geschickt, welche anschließend die Bretter schleift. Diese geschliffenen Bretter gehen anschließen an den Gitarrenbauer, der aus den geschliffenen Brettern eine Gitarre baut. Das Prinzip ist folgendes: Es gibt eine serielle Verarbeitung der Produkte. Genauso funktioniert der Pipe-Operator. Er übergibt den Output einer Funktion in die nächste Funktion. Hier ein einfaches Beispiel:

## [1] 3

Die Funktion mean(c(9, 10, 8)) berechnet den Mittelwert aus dem Vektor mit den Zahlen 9, 10, 8 (= 9). Diese Zahl 9 wird an die Funktion sqrt übergeben. Du siehst, dass in der Funktion sqrt(.) ein Punkt notiert ist. Dieser Punkt steht für den Output der vorherigen Funktion (hier mean). Wir könnten diesen Punkt auch weglassen:

## [1] 3

Ein anderes Beispiel: Wir berechnen die Summe aus zwei Zahlen mit der Funktion sum. Die erste Zahl der Summe übergeben wir allerdings mithilfe des Pipe-Operators:

## [1] 6

Alternativ können wir den Punkt . auch entfernen:

## [1] 6

Diese Befehle sind äquivalent zu:

## [1] 6

Der Vorteil des Pipe-Operators wird dir vermutlich erst im Verlaufe des Kurses deutlich, wenn wir mehrere Manipulationen an Daten vornehmen.

Der Pipe Operator ist häufig schwierig mit der Tastatur zu schreiben. In R-Studio gibt es einen Shortcut: STRG + Umschalt + M. Dies ist ein Shortcut, den es sich lohnt zu lernen.