10  Pipe

Ein wichtiger Operator für den Umgang mit Datensätzen ist die Pipe. Diese ist fester Bestandteil des Tidyverse (siehe Abschnitt 21.2) und hat sich dort so bewährt, dass sie seit R Version 4.1 ebenfalls im “Standard”-R implementiert ist.

Die Pipe erlaubt es, Datenströme weiterzuleiten.

Hierfür wurde ein eigener Operator implementiert, die Zeichenkette |>

Sie bedeutet so viel wie “und dann”.

Zur Eklärung sei der “klassische Weg” der Arbeitsschritte in R aufgezeigt:

# wir machen etwas, und speichern es in ein Objekt 
habe.getan <- mache.etwas(Datensatz)

# dann machen wir etwas weiteres, 
# und speichern wieder in ein Objekt
habe.weiteres.getan <- mache.weiteres(habe.getan)

# und kommen schließlich zum Endergebnis 
endergebnis <- mache.noch.letzte.Sache(habe.weiteres.getan)

Mit Einsatz der Pipe wird dieser Prozess quasi umgekehrt in

# Speichere Endergebnis 
endergebnis <- Datensatz |> 
                gruppiere.nach.geschlecht() |> 
                  sortiere Alter aufsteigend() |> 
                    nimm die letzten 4 Werte()

Die liest sich in etwa so:

Die Pipe reicht das jeweilige Ergebnis (den Datenstrom) an die nächste Code-Zeile weiter. Erst wenn die letzte Zeile durchgelaufen ist, wird das Resultat in endergebnis gespeichert.

Dies liest sich zu Beginn evtl. etwas ungewohnt, aber Sie können erkennen, dass die Befehle so wesentlich übersichtlicher und die einzelnen Manipulationsschritte nachvollziehbarer geworden sind. Auch kann man sich diese Art der “Grammatik” relativ leicht merken.

Standardmäßig übergibt die Pipe das Objekt auf der linken Seite an das erste Argument der Funktion auf der rechten Seite, so dass x |> f(y) äquivalent zu f(x, y) ist, und x |> f(y) |> g(z) äquivalent zu g(f(x, y), z).

Mehr über die “Original”-Pipe %>% des Tidyverse sowie zu den Unterschieden zur Standard-Pipe |> finden Sie in Abschnitt 21.2.

In RStudio können Sie einstellen, ob Sie mit der Tastenkombination [STRG] + [SHFIT] + [M] die Tidyverse-Pipe oder die Standard-Pipe erzeugen möchten. Wählen Sie hierzu im Menü “Tools” \(\rightarrow\) “Global Option” \(\rightarrow\) “Code” aus, siehe Abbildung 10.1

Abb. 10.1: Tastenkombination für Pipe

Sie sollten die Standard-Pipe nutzen, weil sie Teil von Base R ist und Ihnen immer zur Verfügung steht, auch wenn Sie Tidyverse nicht verwenden. Zudem ist |> um einiges schneller als %>%.