Есть ли причина, почему я должен использовать
map(<list-like-object>, function(x) <do stuff>)
вместо того
lapply(<list-like-object>, function(x) <do stuff>)
выходные данные должны быть такими же, а сделанные мной тесты, по-видимому, показывают, что lapply
это немного быстрее (это должно быть так, как map
необходимо для оценки всех нестандартных оценок).
Так есть ли причина, по которой в таких простых случаях мне стоит подумать о переходе на purrr::map
? Я не спрашиваю здесь о подобных своем или антипатиях о синтаксисе, другие функции обеспечиваются purrr и т.д., но строго о сравнении purrr::map
с lapply
предполагая , используя стандартную оценку, то есть map(<list-like-object>, function(x) <do stuff>)
. Есть ли какое-либо преимущество purrr::map
с точки зрения производительности, обработки исключений и т. Д.? Комментарии ниже предполагают, что это не так, но, возможно, кто-то мог бы уточнить немного больше?
~{}
сокращение лямбда (с или без {}
печатей сделка для меня для простого purrr::map()
. Приведение типов в действие purrr::map_…()
удобны и менее тупы, чем vapply()
. purrr::map_df()
это супер дорогая функция, но она также упрощает код. Нет ничего плохого в том, чтобы придерживаться базы R [lsv]apply()
, хотя .
purrr
вещи. Моя точка зрения заключается в следующем: tidyverse
отлично подходит для анализа / интерактивных / отчетов, а не для программирования. Если вам нужно использовать lapply
или map
вы программируете, и однажды вы можете создать пакет. Тогда чем меньше зависимостей, тем лучше. Плюс: я иногда вижу людей, использующих map
довольно туманный синтаксис после. И теперь, когда я вижу тестирование производительности: если вы привыкли к apply
семье: придерживайтесь этого.
tidyverse
хотя, вы можете извлечь выгоду из трубы%>%
и анонимных функций~ .x + 1
синтаксиса