¿Hay alguna razón por la que debería usar
map(<list-like-object>, function(x) <do stuff>)
en vez de
lapply(<list-like-object>, function(x) <do stuff>)
el resultado debería ser el mismo y los puntos de referencia que realicé parecen mostrar que lapply
es un poco más rápido (debería ser como map
evaluar todas las entradas de evaluación no estándar).
Entonces, ¿hay alguna razón por la cual para casos tan simples debería considerar cambiarme purrr::map
? No estoy pidiendo aquí sobre gustos o disgustos sobre la sintaxis de uno, otras funcionalidades proporcionadas por purrr etc., pero estrictamente sobre la comparación de purrr::map
la lapply
suponiendo el uso de la evaluación estándar, es decir map(<list-like-object>, function(x) <do stuff>)
. ¿Hay alguna ventaja purrr::map
en términos de rendimiento, manejo de excepciones, etc.? Los comentarios a continuación sugieren que no es así, pero ¿tal vez alguien podría elaborar un poco más?
~{}
lambda acceso directo (con o sin los {}
sellos de la oferta para mí por llano purrr::map()
. El tipo de aplicación de la purrr::map_…()
son muy útiles y menos obtusos que vapply()
. purrr::map_df()
es una función caro súper pero también simplifica código. No hay absolutamente nada de malo en la pervivencia de la base R [lsv]apply()
, aunque .
purrr
cosas. Mi punto es el siguiente: tidyverse
es fabuloso para análisis / interactivo / informes, no para programación. Si tiene que usar lapply
o map
está programando y puede terminar algún día creando un paquete. Entonces, cuanto menos dependencias, mejor. Además: a veces veo personas que usan map
una sintaxis bastante oscura después. Y ahora que veo pruebas de rendimiento: si estás acostumbrado a la apply
familia: mantente firme.
tidyverse
, puede beneficiarse de la sintaxis de canalización%>%
y funciones anónimas~ .x + 1