Как не использовать циклы
в языке R
Пакет purrr
Алексей Селезнёв
Сильные стороны пакета purrr
• Функции purrr хорошо сочетаются с конвейерами magrittr
• Функции purrr являются типоустойчивыми, и возвращают результат в ожидаемом формате, в
базовом R это реализовано только в функции vapply().
• Функции purrr поддерживают сокращённый синтаксис за счёт формул.
• Функции purrr могут итерироваться одновременно по любому количеству объектов
считывая данные для аргументов функций из фрейма.
• Пакет purrr позволяет по очереди применить набор разных функций к объектам.
• purrr имеет набор функций для обработки ошибок, полученных в результате итерирования.
• …
Семейства функций в purrr
• map_* - итерируются по объекту подобно функциям семейства apply*
• pmap_* - позволяет итерировать по любому количеству объектов, принимая аргументы
применяемой функции в виде таблицы или списка
• invoke_map – позволяет применять различные функции к объекту
• walk* - выполняют действия не возвращая результат, например сохраняют файлы
• keep и discord – функции фильтрующие результат
• reduce и accumulate – функции которые применяют по очереди заданную функцию к парам
объектов
• possibly, safely, quietly - функции обработки ошибок
Семейство map() - функции
• map() – аналог lapply(), возвращает список
• map_lgl() – возвращает логический вектор
• map_chr() – возвращает текстовый вектор
• map_int() – возвpащает целочисленный вектор
• map_dbl() – возвращает вектор чисел с плавающей запятой
• map_df(), map_dfr(), map_dfc() – возвращают таблицу
Семейство map() - аргументы
• .x – объект, элементы которого необходимо перебрать
• .f– функция, которую будем применять
• … - аргументы функции.f
• .id – позволяет добавить столбец с идентификатором элемента входящего объекта
(доступно только в map_dfr*())
Итерирование одновременно по нескольким
объектам
• map2_*() – итерирование по двум объектам
• pmap_*() – итерирование более чем по двум объектам
Синтаксис формул в purrr
Знак тильды (~) заменяет function(.x)
Обращение к аргументам анонимной функции:
• Если аргумент один – точка
• Если два аргумента .x и .y
• Если более двух аргументов ..1, ..2, ..3 и т.д.
Функции walk(), walk2() и pwalk()
• Сохранение данных в файл
• Сохранение графиков в файл
• Отправка сообщений
• Любые другие действия, в которых вы не ожидаете от функции исходящих данных
Функции keep() и discord()
Позволяют фильтровать полученные результаты по заданному
условию
Функции invoke_*()
Позволяют применять несколько функций к объектам
Функции reduce() и accumulate()
• reduce() – применяет функцию с двумя основными входными переменными и
повторно применяет её к списку до тех пор, пока не останется хотя бы один
элемент.
• accumulate() – аналогична reduce(), но удерживает все промежуточные
результаты.
Определения из книги «Язык R в задачах науки о данных»
СПАСИБО ЗА ВНИМАНИЕ

Пакет purrr

  • 1.
    Как не использоватьциклы в языке R Пакет purrr Алексей Селезнёв
  • 2.
    Сильные стороны пакетаpurrr • Функции purrr хорошо сочетаются с конвейерами magrittr • Функции purrr являются типоустойчивыми, и возвращают результат в ожидаемом формате, в базовом R это реализовано только в функции vapply(). • Функции purrr поддерживают сокращённый синтаксис за счёт формул. • Функции purrr могут итерироваться одновременно по любому количеству объектов считывая данные для аргументов функций из фрейма. • Пакет purrr позволяет по очереди применить набор разных функций к объектам. • purrr имеет набор функций для обработки ошибок, полученных в результате итерирования. • …
  • 3.
    Семейства функций вpurrr • map_* - итерируются по объекту подобно функциям семейства apply* • pmap_* - позволяет итерировать по любому количеству объектов, принимая аргументы применяемой функции в виде таблицы или списка • invoke_map – позволяет применять различные функции к объекту • walk* - выполняют действия не возвращая результат, например сохраняют файлы • keep и discord – функции фильтрующие результат • reduce и accumulate – функции которые применяют по очереди заданную функцию к парам объектов • possibly, safely, quietly - функции обработки ошибок
  • 4.
    Семейство map() -функции • map() – аналог lapply(), возвращает список • map_lgl() – возвращает логический вектор • map_chr() – возвращает текстовый вектор • map_int() – возвpащает целочисленный вектор • map_dbl() – возвращает вектор чисел с плавающей запятой • map_df(), map_dfr(), map_dfc() – возвращают таблицу
  • 5.
    Семейство map() -аргументы • .x – объект, элементы которого необходимо перебрать • .f– функция, которую будем применять • … - аргументы функции.f • .id – позволяет добавить столбец с идентификатором элемента входящего объекта (доступно только в map_dfr*())
  • 6.
    Итерирование одновременно понескольким объектам • map2_*() – итерирование по двум объектам • pmap_*() – итерирование более чем по двум объектам
  • 7.
    Синтаксис формул вpurrr Знак тильды (~) заменяет function(.x) Обращение к аргументам анонимной функции: • Если аргумент один – точка • Если два аргумента .x и .y • Если более двух аргументов ..1, ..2, ..3 и т.д.
  • 8.
    Функции walk(), walk2()и pwalk() • Сохранение данных в файл • Сохранение графиков в файл • Отправка сообщений • Любые другие действия, в которых вы не ожидаете от функции исходящих данных
  • 9.
    Функции keep() иdiscord() Позволяют фильтровать полученные результаты по заданному условию
  • 10.
    Функции invoke_*() Позволяют применятьнесколько функций к объектам
  • 11.
    Функции reduce() иaccumulate() • reduce() – применяет функцию с двумя основными входными переменными и повторно применяет её к списку до тех пор, пока не останется хотя бы один элемент. • accumulate() – аналогична reduce(), но удерживает все промежуточные результаты. Определения из книги «Язык R в задачах науки о данных»
  • 12.