library(magrittr)
<- 5.678
x
# base-Pipe
|> round(2) x
[1] 5.68
# magrittr-Pipe
%>% round(2) x
[1] 5.68
Eine Alternative zum base-Pipe-Operator (“|>”), den wir im R Crash Course kennengelert haben, ist der am meisten verbreitete magrittr-Pipe-Operator (“%>%”) aus dem Paket “magrittr”. Der magrittr-Pipe funktioniert sehr ähnlich wie der base-Pipe:
library(magrittr)
<- 5.678
x
# base-Pipe
|> round(2) x
[1] 5.68
# magrittr-Pipe
%>% round(2) x
[1] 5.68
Es gibt allerdings auch einige Unterschiede. Die Wichtigsten sind:
1:5 |> sum()
1:5 |> sum # hier bekommen wir eine Fehlermeldung
1:5 %>% sum # hier nicht
Error in sum: The pipe operator requires a function call as RHS (<input>:2:8)
Entsprechend kann der Code-chunk aus dem vorherigen Beispiel mit dem magrittr-Pipe alternativ auch so aussehen:
<- c(1, 2, 3, 4, 5) %>%
result append(c(6,7,8)) %>%
%>%
sum
sqrt
print(result)
[1] 6
<- 3
x
# base-Pipe
|> round(3.4567, digits = _) # "_" als Platzhalter & Argument "digits" muss genannt werden x
[1] 3.457
# magrittr-Pipe
%>% round(3.4567, .) # "." als Platzhalter & Argument muss nicht genannt werden x
[1] 3.457
Wir schauen uns ein weiteres komplexeres Beispiel an, um den Unterschied zwischen den Platzhaltern zu veranschaulichen:
<- data.frame(var1 = c(1, 2, 3, 4, 5),
data var2 = c(10, 9, 8, 7, 10),
var3 = c(11, 12, 16, 14, 17))
%>% .$var1 %>% cor(., data$var2) # dies funktioniert
data
|> _$var1 |> cor(_, data$var2) # dies funktioniert nicht, weil der Platzhalter
data # "_" nur als Argument verwendet werden darf und wir bekommen eine Fehlermeldung
Error in cor("_", data$var2): pipe placeholder can only be used as a named argument (<input>:7:21)