Чи є якась причина, чому я повинен використовувати
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