mit R Version 4.1 ist die native Pipe als denkbare Konkurrenz zur magrittr Pipe eingeführt worden und ich frage mich, welchen Sinn die zweite Pipe hat und ob sie sich durchsetzen wird. Klar ist, sie funktioniert anders: "The simple form of the forward pipe inserts the left-hand side as the first argument in the right-hand side call."
Das kann man beispielsweise beim Benchmarking sehen:
Code: Alles auswählen
library(microbenchmark)
library(magrittr)
bm <- microbenchmark(
1:500 |> sqrt(),
1:500 %>% sqrt,
times = 10000
)
print(bm)
boxplot(bm)
Code: Alles auswählen
> print(bm)
Unit: microseconds
expr min lq mean median uq max neval
sqrt(1:500) 3.5 4.0 6.56177 4.3 5.3 9544.4 10000
1:500 %>% sqrt 5.7 6.3 9.56969 6.7 8.5 6211.7 10000
Die Dokumentationsseite zur Pipe schreibt "The forward pipe operator is motivated by the pipe introduced in the magrittr package, but is more streamlined. " Das wird Athomas gefallen, dass hier auf die Quelle des Gedankens verwiesen wird. Aber kann mir vielleicht jemand erklären, was streamlined in diesem Kontext heißt?
Der von jogo unter Aktuelles zum Thema verlinkte Blog schreibt über die native Pipe:
Sieht jemand bessere Debugging Möglichkeiten? Ich gebe gerne zu, dass Debugging bei mir oft das Einfügen von print-Kommandos ist. Auf dem Niveau sehe ich die Vorteile nicht, aber ich könnte mir schon denken, dass bei der Verwendung von debug() entstehen?The new operator is nicer to type, and should be both more efficient and easier to debug, than the {magrittr} pipe.
Auf der Gegenseite der Waage hat magrittr einfach einen riesigen Popularitätsvorsprung. Zigtausende Blogs und Erklärungen im Netz, die es schon nutzen und dann noch den Punkt-Operator.
Wie seht Ihr das?
LG,
Bernhard