library(magrittr)
x <- 5.678
# base-Pipe
x |> round(2)[1] 5.68
# magrittr-Pipe
x %>% round(2)[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)
x <- 5.678
# base-Pipe
x |> round(2)[1] 5.68
# magrittr-Pipe
x %>% round(2)[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:
result <- c(1, 2, 3, 4, 5) %>%
append(c(6,7,8)) %>%
sum %>%
sqrt
print(result)[1] 6
x <- 3
# base-Pipe
x |> round(3.4567, digits = _) # "_" als Platzhalter & Argument "digits" muss genannt werden[1] 3.457
# magrittr-Pipe
x %>% round(3.4567, .) # "." als Platzhalter & Argument muss nicht genannt werden[1] 3.457
Wir schauen uns ein weiteres komplexeres Beispiel an, um den Unterschied zwischen den Platzhaltern zu veranschaulichen:
data <- data.frame(var1 = c(1, 2, 3, 4, 5),
var2 = c(10, 9, 8, 7, 10),
var3 = c(11, 12, 16, 14, 17))
data %>% .$var1 %>% cor(., data$var2) # dies funktioniert
data |> _$var1 |> cor(_, data$var2) # dies funktioniert nicht, weil der Platzhalter
# "_" nur als Argument verwendet werden darf und wir bekommen eine FehlermeldungError in cor("_", data$var2): pipe placeholder can only be used as a named argument (<input>:7:21)