Gibt es einen Grund, warum ich verwenden sollte
map(<list-like-object>, function(x) <do stuff>)
anstatt
lapply(<list-like-object>, function(x) <do stuff>)
Die Ausgabe sollte dieselbe sein, und die von mir erstellten Benchmarks scheinen zu zeigen, dass sie lapply
etwas schneller sind (dies sollte so sein, wie es map
erforderlich ist, um alle nicht standardmäßigen Bewertungseingaben zu bewerten).
Gibt es also einen Grund, warum ich in solch einfachen Fällen tatsächlich in Betracht ziehen sollte, zu zu wechseln purrr::map
? Ich frage hier nicht nach den Vorlieben oder Abneigungen bezüglich der Syntax, anderer Funktionen, die von purrr usw. bereitgestellt werden, sondern ausschließlich nach dem Vergleich purrr::map
mit der lapply
Annahme, dass die Standardbewertung verwendet wird, d map(<list-like-object>, function(x) <do stuff>)
. H. Gibt es einen Vorteil purrr::map
in Bezug auf Leistung, Ausnahmebehandlung usw.? Die Kommentare unten deuten darauf hin, dass dies nicht der Fall ist, aber vielleicht könnte jemand etwas mehr ausarbeiten?
~{}
Abkürzung Lambda (mit oder ohne die {}
Dichtungen für mich den Deal für Ebene purrr::map()
. Die Art-Durchsetzung der purrr::map_…()
ist handlich und weniger stumpf als vapply()
. purrr::map_df()
eine super teuer Funktion ist aber auch vereinfacht Code. Es gibt absolut nichts falsch mit mit Sockel R kleben [lsv]apply()
, obwohl .
purrr
. Mein Punkt ist folgender: tidyverse
ist fabelhaft für Analysen / interaktive / Berichte, nicht für die Programmierung. Wenn Sie verwenden möchten lapply
oder map
dann programmieren, können Sie eines Tages ein Paket erstellen. Je weniger Abhängigkeiten, desto besser. Plus: Ich sehe manchmal Leute, die danach map
mit ziemlich obskurer Syntax arbeiten. Und jetzt, wo ich Leistungstests sehe: Wenn Sie an apply
Familie gewöhnt sind, bleiben Sie dabei.
tidyverse
obwohl, können Sie aus dem Rohr profitieren%>%
und anonymen Funktionen~ .x + 1
Syntax