Y a-t-il une raison pour laquelle je devrais utiliser
map(<list-like-object>, function(x) <do stuff>)
au lieu de
lapply(<list-like-object>, function(x) <do stuff>)
le résultat devrait être le même et les points de repère que j'ai faits semblent montrer que lapply
c'est légèrement plus rapide (cela devrait être le cas map
pour évaluer toutes les entrées d'évaluation non standard).
Alors, y a-t-il une raison pour laquelle, pour des cas aussi simples, je devrais envisager de passer purrr::map
? Je ne demande pas ici ce que l'on aime ou n'aime pas sur la syntaxe, les autres fonctionnalités fournies par purrr etc., mais strictement sur la comparaison purrr::map
avec l' lapply
utilisation de l'évaluation standard, c'est-à-dire map(<list-like-object>, function(x) <do stuff>)
. Y a-t-il un avantage purrr::map
en termes de performances, de gestion des exceptions, etc.? Les commentaires ci-dessous suggèrent que ce n'est pas le cas, mais peut-être que quelqu'un pourrait élaborer un peu plus?
~{}
raccourci lambda (avec ou sans les {}
sceaux, l'affaire pour moi pour le simple purrr::map()
. L'application du type purrr::map_…()
est pratique et moins obtuse que vapply()
. purrr::map_df()
est une fonction super chère mais elle simplifie aussi le code. Il n'y a absolument rien de mal à s'en tenir à la base R [lsv]apply()
, bien que .
purrr
. Mon point est le suivant: tidyverse
est fabuleux pour les analyses / interactifs / rapports, pas pour la programmation. Si vous devez utiliser lapply
ou map
alors vous programmez et pouvez finir un jour par créer un package. Ensuite, les moins dépendances sont les meilleures. Plus: je vois parfois des gens utiliser map
avec une syntaxe assez obscure après. Et maintenant que je vois des tests de performances: si vous êtes habitué à la apply
famille: tenez-vous-y.
tidyverse
cependant, vous pouvez bénéficier de la syntaxe du tube%>%
et des fonctions anonymes~ .x + 1