R. К вершинам мастерства. С решениями и комментариями
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Перевод:
Гинько Александр Юрьевич
Год издания: 2024
Кол-во страниц: 754
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-93700-247-1
Артикул: 856012.01.99
R — безусловно лучшая среда для интерактивного анализа данных. Тем не менее язык R имеет множество особенностей, которые иногда скудно документированы. В данной книге Хэдли Уикем, один из лучших в мире гуру по R, проясняет эти неясные уголки и знакомит с современными библиотеками языка. В книге приведены решения и подробные комментарии ко всем упражнениям.
Издание предназначено программистам R, желающим углубить свои знания, а также будет полезно разработчикам на других языках, стремящимся узнать, что же делает язык R таким особенным.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Хэдли Уикем, Мальте Гроссер, Хеннинг Буманн R. К вершинам мастерства
Hadley Wickham, Malte Grosser, Henning Bumann Advanced R Advanced R Solutions Second Edition
Хэдли Уикем, Мальте Гроссер, Хеннинг Буманн R. К вершинам мастерства С решениями и комментариями Москва, 2024
УДК 004.438R ББК 32.973.22 У35 Уикем Х., Гроссер М., Буманн Х. У35 R. К вершинам мастерства / пер. с англ. А. Ю. Гинько. – М.: ДМК Пресс, 2024. – 752 с.: ил. ISBN 978-5-93700-247-1 R – безусловно лучшая среда для интерактивного анализа данных. Тем не менее язык R имеет множество особенностей, которые иногда скудно документированы. В данной книге Хэдли Уикем, один из лучших в мире гуру по R, проясняет эти неясные уголки и знакомит с современными библиотеками языка. В книге приведены решения и подробные комментарии ко всем упражнениям. Издание предназначено программистам R, желающим углубить свои знания, а также будет полезно разработчикам на других языках, стремящимся узнать, что же делает язык R таким особенным. УДК 004.438R ББК 32.973.22 All Rights Reserved. Authorised translation from the English language edition published by CRC Press, a member of the Taylor & Francis Group LLC. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-0-815-38457-1 (англ.) © 2019 by Taylor & Francis Group, LLC © 2022 Malte Grosser, Henning Bumann, Hadley Wickham ISBN 978-5-93700-247-1 (рус.) © Перевод, оформление, издание, ДМК Пресс, 2024
Посвящается Мине, лучшему напарнику в написании книги. Мы будем по тебе скучать
Содержание От издательства.......................................................................................................19 О переводчике.........................................................................................................20 Предисловие.............................................................................................................21 Глава 1 Введение.................................................................................................24 1.1 Почему R?...........................................................................................................24 1.2 Для кого эта книга..............................................................................................26 1.3 Что вы узнаете из этой книги...........................................................................27 1.4 Чего вы не узнаете из этой книги.....................................................................28 1.5 Метатехники......................................................................................................28 1.6 Список рекомендуемой литературы................................................................29 1.7 Помощь в разработке.........................................................................................29 1.8 Благодарности....................................................................................................30 1.9 Соглашения........................................................................................................34 1.10 Выходные данные..............................................................................................34 Часть I ОСНОВЫ..................................................................................................36 Введение....................................................................................................................37 Глава 2 Имена и значения................................................................................39 2.1 Введение.............................................................................................................39 2.2 Основы связывания...........................................................................................41 2.2.1 Синтаксически неправильные имена.................................................42 2.2.2 Упражнения...........................................................................................43 2.3 Копирование при изменении...........................................................................44 2.3.1 tracemem()..............................................................................................45 2.3.2 Вызовы функций...................................................................................45 2.3.3 Списки...................................................................................................47 2.3.4 Датафреймы..........................................................................................48 2.3.5 Символьные векторы............................................................................49 2.3.6 Упражнения...........................................................................................50 2.4 Размеры объектов..............................................................................................51 2.4.1 Упражнения...........................................................................................52 2.5 Изменение на месте..........................................................................................53 2.5.1 Объекты с единственной привязкой...................................................53 2.5.2 Окружения.............................................................................................56 2.5.3 Упражнения...........................................................................................57 2.6 Отвязывание и сборщик мусора.......................................................................58 2.7 Ответы на контрольные вопросы.....................................................................60
Содержание 7 Глава 3 Векторы...................................................................................................61 3.1 Введение.............................................................................................................61 3.2 Атомарные векторы...........................................................................................63 3.2.1 Скаляры.................................................................................................63 3.2.2 Создание длинных векторов с помощью функции c().......................64 3.2.3 Пропущенные значения.......................................................................65 3.2.4 Определение и приведение типов векторов.......................................66 3.2.5 Упражнения...........................................................................................67 3.3 Атрибуты............................................................................................................67 3.3.1 Получение и установка.........................................................................68 3.3.2 Имена.....................................................................................................69 3.3.3 Размерности..........................................................................................70 3.3.4 Упражнения...........................................................................................71 3.4 Атомарные векторы S3......................................................................................72 3.4.1 Факторы.................................................................................................73 3.4.2 Даты.......................................................................................................75 3.4.3 Даты со временем.................................................................................75 3.4.4 Длительности........................................................................................76 3.4.5 Упражнения...........................................................................................77 3.5 Списки................................................................................................................77 3.5.1 Создание................................................................................................77 3.5.2 Определение и приведение типов.......................................................79 3.5.3 Матрицы и массивы..............................................................................80 3.5.4 Упражнения...........................................................................................80 3.6 Датафреймы и тибблы.......................................................................................80 3.6.1 Создание................................................................................................82 3.6.2 Имена строк...........................................................................................85 3.6.3 Вывод на экран......................................................................................86 3.6.4 Извлечение подмножеств.....................................................................87 3.6.5 Определение и приведение табличных типов....................................88 3.6.6 Списки в колонках................................................................................89 3.6.7 Матрицы и датафреймы в колонках....................................................90 3.6.8 Упражнения...........................................................................................91 3.7 NULL....................................................................................................................91 3.8 Ответы на контрольные вопросы.....................................................................92 Глава 4 Подмножества.......................................................................................93 4.1 Введение.............................................................................................................93 4.2 Выбор нескольких элементов...........................................................................94 4.2.1 Атомарные векторы..............................................................................94 4.2.2 Списки...................................................................................................97 4.2.3 Матрицы и массивы..............................................................................97 4.2.4 Датафреймы и тибблы..........................................................................98 4.2.5 Сохранение размерностей.................................................................100 4.2.6 Упражнения.........................................................................................101 4.3 Выбор одного элемента...................................................................................101 4.3.1 [[............................................................................................................102
Содержание 4.3.2 $............................................................................................................103 4.3.3 Отсутствующие и выходящие за границы индексы.........................104 4.3.4 @ и slot()..............................................................................................105 4.3.5 Упражнения.........................................................................................105 4.4 Извлечение множеств и присваивание..........................................................106 4.5 Применение.....................................................................................................107 4.5.1 Таблицы поиска (символьное извлечение подмножеств)...............107 4.5.2 Сопоставление и объединение в ручном режиме (целочисленное извлечение подмножеств)......................................107 4.5.3 Случайные выборки и бутстрэпы (целочисленное извлечение подмножеств)......................................................................................108 4.5.4 Упорядочивание (целочисленное извлечение подмножеств).........109 4.5.5 Разворачивание агрегированных данных (целочисленное извлечение подмножеств)..................................................................110 4.5.6 Удаление столбцов из датафрейма (символьное извлечение подмножеств)......................................................................................111 4.5.7 Выбор строк по условию (логическое извлечение подмножеств).....111 4.5.8 Булева алгебра против множеств (логическое и целочисленное извлечение подмножеств)..................................................................112 4.5.9 Упражнения.........................................................................................114 4.6 Ответы на контрольные вопросы...................................................................114 Глава 5 Управляющие структуры.................................................................115 5.1 Введение...........................................................................................................115 5.2 Выбор................................................................................................................116 5.2.1 Некорректные входные значения......................................................117 5.2.2 Векторизованный if............................................................................117 5.2.3 Оператор switch()................................................................................118 5.2.4 Упражнения.........................................................................................119 5.3 Циклы...............................................................................................................120 5.3.1 Распространенные ловушки...............................................................121 5.3.2 Сопутствующие инструменты............................................................122 5.3.3 Упражнения.........................................................................................123 5.4 Ответы на контрольные вопросы...................................................................123 Глава 6 Функции.................................................................................................124 6.1 Введение...........................................................................................................124 6.2 Основы функций..............................................................................................125 6.2.1 Компоненты функций........................................................................126 6.2.2 Примитивные функции......................................................................127 6.2.3 Функции первого класса.....................................................................127 6.2.4 Вызов функций....................................................................................128 6.2.5 Упражнения.........................................................................................129 6.3 Комбинирование функций..............................................................................130 6.4 Лексический поиск..........................................................................................131 6.4.1 Маскировка имен................................................................................132 6.4.2 Функции против переменных............................................................133
Содержание 9 6.4.3 С чистого листа....................................................................................134 6.4.4 Динамический поиск..........................................................................135 6.4.5 Упражнения.........................................................................................135 6.5 Ленивые вычисления.......................................................................................136 6.5.1 Промисы..............................................................................................136 6.5.2 Аргументы по умолчанию..................................................................137 6.5.3 Пропущенные аргументы...................................................................138 6.5.4 Упражнения.........................................................................................140 6.6 … (точка–точка–точка)....................................................................................141 6.6.1 Упражнения.........................................................................................143 6.7 Выход из функции...........................................................................................144 6.7.1 Явный и неявный возврат..................................................................144 6.7.2 Невидимые значения.........................................................................145 6.7.3 Ошибки................................................................................................146 6.7.4 Обработчики выхода...........................................................................146 6.7.5 Упражнения.........................................................................................148 6.8 Формы записи функций..................................................................................149 6.8.1 Преобразование в префиксную форму записи.................................149 6.8.2 Префиксная форма.............................................................................151 6.8.3 Инфиксная форма...............................................................................152 6.8.4 Замещающая форма...........................................................................153 6.8.5 Особая форма......................................................................................154 6.8.6 Упражнения.........................................................................................155 6.9 Ответы на контрольные вопросы...................................................................156 Глава 7 Окружения.............................................................................................157 7.1 Введение...........................................................................................................157 7.2 Основы окружений..........................................................................................158 7.2.1 Основы.................................................................................................158 7.2.2 Важные окружения.............................................................................160 7.2.3 Родители..............................................................................................161 7.2.4 Присваивание в родительском окружении <<-.................................163 7.2.5 Получение и установка значений......................................................163 7.2.6 Продвинутые привязки......................................................................165 7.2.7 Упражнения.........................................................................................166 7.3 Рекурсия по окружениям.................................................................................167 7.3.1 Упражнения.........................................................................................169 7.4 Особые окружения...........................................................................................169 7.4.1 Окружения пакетов и путь для поиска..............................................170 7.4.2 Окружения функций...........................................................................171 7.4.3 Пространства имен.............................................................................172 7.4.4 Окружения выполнения.....................................................................175 7.4.5 Упражнения.........................................................................................178 7.5 Стеки вызовов..................................................................................................178 7.5.1 Простые стеки вызовов......................................................................179 7.5.2 Ленивые вычисления..........................................................................180 7.5.3 Фреймы................................................................................................181 7.5.4 Динамический поиск..........................................................................182 7.5.5 Упражнения.........................................................................................182
Содержание 7.6 Окружения как структуры данных.................................................................182 7.7 Ответы на контрольные вопросы...................................................................183 Глава 8 Состояния..............................................................................................184 8.1 Введение...........................................................................................................184 8.1.1 Требования..........................................................................................186 8.2 Сигнализирование о состояниях....................................................................186 8.2.1 Ошибки................................................................................................187 8.2.2 Предупреждения.................................................................................188 8.2.3 Сообщения...........................................................................................189 8.2.4 Упражнения.........................................................................................191 8.3 Игнорирование состояний..............................................................................191 8.4 Обработка состояний.......................................................................................193 8.4.1 Объекты состояний.............................................................................194 8.4.2 Обработчики выхода...........................................................................195 8.4.3 Обработчики вызова...........................................................................196 8.4.4 Стеки вызовов.....................................................................................199 8.4.5 Упражнения.........................................................................................200 8.5 Пользовательские состояния..........................................................................201 8.5.1 Предпосылки.......................................................................................202 8.5.2 Сигнализирование..............................................................................202 8.5.3 Обработка............................................................................................204 8.5.4 Упражнения.........................................................................................205 8.6 Практическое применение.............................................................................205 8.6.1 Значение ошибки................................................................................205 8.6.2 Значения успеха и ошибки.................................................................206 8.6.3 Повторное сигнализирование............................................................208 8.6.4 Запись состояний................................................................................208 8.6.5 Отсутствие поведения по умолчанию...............................................210 8.6.6 Упражнения.........................................................................................212 8.7 Ответы на контрольные вопросы...................................................................213 Часть II Функциональное программирование........................................214 Введение..................................................................................................................215 Глава 9 Функционалы.......................................................................................218 9.1 Введение...........................................................................................................218 9.2 Мой первый функционал: map().....................................................................220 9.2.1 Создание атомарных векторов..........................................................221 9.2.2 Анонимные функции и сокращенная запись...................................223 9.2.3 Передача дополнительных аргументов.............................................225 9.2.4 Имена аргументов...............................................................................227 9.2.5 Изменение другого аргумента...........................................................228 9.2.6 Упражнения.........................................................................................229 9.3 Стиль purrr........................................................................................................230 9.4 Разновидности функции map.........................................................................232 9.4.1 Вход и выход одного типа: modify()...................................................232