group-telegram.com/stats_for_science/45
Create:
Last Update:
Last Update:
Супер крутая инструкция по освоению библиотеки purrr для замены циклов
Немного контекста: в R принято обходиться не то чтоб без вложенных циклов, а без циклов вообще. Как это реализуется? Большинство функций в R векторизованы, что означает, что функция будет работать со всеми элементами вектора без необходимости проходить цикл и обрабатывать каждый элемент по одному.
Простейший пример векторизации - возвести числа от 1 до 10 в квадрат. Классическим подходом было бы написать цикл от 1 до 10 и возвести в квадрат каждый элемент. Однако в R это можно сделать гораздо проще!
(1:10)**2
[1] 1 4 9 16 25 36 49 64 81 100
Мы просто взяли вектор чисел от 1 до 10 и возвели в квадрат одной строчкой без всяких циклов. Это самый простой прием, для более сложных пригодятся функции семейства
apply
или их более продвинутый аналог функции семейства map_*, map2_*
из библиотеки purrr
. Именно последним посвящен туториал, скачать который можно по ссылке.Пример из жизни применения map функции. У меня много однотипных датасетов в определенной директории с одним расширением (например csv). Задача считать все датасеты в один лист для последующих манипуляций с ними. Чтобы не писать цикл, используем
purrr::map
library(tidyverse)
csv_file_names <- dir(pattern = 'csv')
list_csv <- map(csv_file_names, ~read_csv(.x))
ИЛИ
list_csv <- map(csv_file_names, function(x) read_csv(x))
, если без синтаксического сахара, а использовать более привычный apply-способ
Вообще на тему функционального программирования в R, векторизации и сравнения *apply и map_* функций можно довольно много что расписать, если есть интерес к этой теме, ставьте реакцию с китом (потому что с котом еще нет реакций, а символ purrr - котик).
#R #tidyverse #purrr
BY Статистика и R в науке и аналитике
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/stats_for_science/45