Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

R. Книга рецептов: Проверенные рецепты для статистики, анализа и визуализации данных

Покупка
Артикул: 781034.01.99
Доступ онлайн
1 124 ₽
В корзину
Язык R - мощный инструмент статистического программирования, десятки тысяч людей ежедневно используют его для проведения серьезного статистического анализа. Но не все задачи, даже простые, удастся быстро решить с его помощью, если не знать определенных тонкостей. Эта книга предлагает практические советы по решению разнообразных задач с подробным разбором каждой из них. От основных задач автор переходит к вводу и выводу, общей статистике, графике, линейной регрессии - любая значительная работа с R подразумевает знакомство с большинством этих областей или с ними всеми. Издание пригодится для разработчиков на R с разным уровнем подготовки - от новичков до уверенных пользователей, желающих расширить свой кругозор.
Лонг, Дж. R. Книга рецептов: Проверенные рецепты для статистики, анализа и визуализации данных : практическое руководство / Дж. Лонг, П. Титор ; пер. с анг. Д. А. Беликова. - Москва : ДМК Пресс, 2020. - 510 с. - ISBN 978-5-97060-835-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/1873498 (дата обращения: 28.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Дж. Д. Лонг и Пол Титор

R. Книга рецептов 
Проверенные рецепты 
для статистики, анализа 
и визуализации

R Cookbook 
Proven Recipes for Data 
Analysis, Statistics, 
and Graphics

J. D. Long and Paul Teetor

R. Книга рецептов 
Проверенные рецепты 
для статистики, анализа 
и визуализации

Дж. Д. Лонг и Пол Титор

Москва, 2020

УДК 004.438R
ББК 32.973.22
Л76

Дж. Д. Лонг и Пол Титор
Л76 R. Книга рецептов: Проверенные рецепты для статистики, анализа и визуализации данных / пер. с анг. Д. А. Беликова. – М.: ДМК Пресс, 2020. – 
510 с.: ил. 

ISBN 978-5-97060-835-7

Язык R – мощный инструмент статистического программирования, десятки тысяч 

людей ежедневно используют его для проведения серьезного статистического анализа. 
Но не все задачи, даже простые, удастся быстро решить с его помощью, если не знать 
определенных тонкостей.
Эта книга предлагает практические советы по решению разнообразных задач с подробным разбором каждой из них. От основных задач автор переходит к вводу и выводу, 
общей статистике, графике, линейной регрессии – любая значительная работа с R подразумевает знакомство с большинством этих областей или с ними всеми.
Издание пригодится для разработчиков на R с разным уровнем подготовки – от новичков до уверенных пользователей, желающих расширить свой кругозор.

УДК 004.438R
ББК 32.973.22

Authorized Russian translation of the English edition of R Cookbook 2E ISBN 9781492040682 

© 2019 J.D. Long and Paul Teetor.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls 

all rights to publish and sell the same.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой 

бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

ISBN 978-1-492-04068-2 (анг.) 
 
© 2019 J.D. Long and Paul Teetor
ISBN 978-5-97060-835-7 (рус.) 
 
© Оформление, издание, перевод, ДМК Пресс, 2020

Оглавление

Предисловие редактора ............................................................................................12
Добро пожаловать в Книгу рецептов R ............................................................13
Благодарности ..................................................................................................................18

Глава 1. Начало работы и получение  
справочной информации ..........................................................................................19

1.1. Загрузка и установка R.......................................................................................................20
1.2. Установка RStudio ...............................................................................................................22
1.3. Запуск RStudio ....................................................................................................................23
1.4. Ввод команд........................................................................................................................24
1.5. Выход из RStudio ................................................................................................................26
1.6. Прерывание R .....................................................................................................................28
1.7. Просмотр прилагаемой документации  ...........................................................................28
1.8. Получение справки по функции .......................................................................................30
1.9. Поиск в прилагаемой документации  ...............................................................................31
1.10. Получение справки по пакету  ........................................................................................33
1.11. Поиск справки в интернете  ............................................................................................34
1.12. Поиск соответствующих функций и пакетов  ................................................................36
1.13. Поиск в списках рассылки  ..............................................................................................37
1.14. Отправка вопросов в Stack Overflow или в другое место в сообществе .......................38

Глава 2. Немного основ ...............................................................................................42

2.1. Вывод на экран ...................................................................................................................42
2.2. Установка переменных ......................................................................................................44
2.3. Перечисление переменных  ..............................................................................................45
2.4. Удаление переменных .......................................................................................................46
2.5. Создание вектора  ..............................................................................................................48
2.6. Базовая статистика  ...........................................................................................................49
2.7. Создание последовательностей  ........................................................................................51
2.8. Сравнение векторов  ..........................................................................................................53
2.9. Выбор элементов вектора..................................................................................................54
2.10. Векторная арифметика ....................................................................................................57
2.11. Разбираемся с приоритетом оператора .........................................................................58
2.12. Меньше печатать и больше делать .................................................................................60
2.13. Создание конвейера вызовов функций ..........................................................................61
2.14. Как избежать некоторых распространенных ошибок  ..................................................64

Глава 3. Навигация по программному обеспечению  ..............................69

3.1. Получение и настройка рабочего каталога ......................................................................69
3.2. Создание нового проекта RStudio .....................................................................................70
3.3. Сохранение своего рабочего пространства  .....................................................................72
3.4. Просмотр истории команд  ...............................................................................................73
3.5. Сохранение результата предыдущей команды  ...............................................................74

3.6. Отображение загруженных пакетов через путь поиска  .................................................75
3.7. Просмотр списка установленных пакетов  .......................................................................76
3.8. Доступ к функциям в пакете  ............................................................................................77
3.9. Доступ к встроенным наборам данных  ...........................................................................78
3.10. Установка пакетов из CRAN  ............................................................................................80
3.11. Установка пакета из GitHub .............................................................................................81
3.12. Установка или изменение зеркала CRAN по умолчанию ..............................................82
3.13. Запуск сценария ...............................................................................................................84
3.14. Запуск пакетного сценария .............................................................................................85
3.15. Поиск домашнего каталога R  .........................................................................................87
3.16. Настройка запуска R ........................................................................................................88
3.17. Использование R и RStudio в облаке ...............................................................................91

Глава 4. Ввод и вывод  ................................................................................................93

4.1. Ввод данных с клавиатуры ................................................................................................93
4.2. Вывод меньшего числа цифр (или большего)  .................................................................94
4.3. Перенаправление вывода в файл ......................................................................................96
4.4. Список файлов ...................................................................................................................97
4.5. Не удается открыть файл в Windows – что делать? .........................................................99
4.6. Чтение записей фиксированной ширины  .....................................................................100
4.7. Чтение файлов табличных данных  ................................................................................102
4.8. Чтение из файлов CSV  .....................................................................................................105
4.9. Запись в файлы CSV  ........................................................................................................107
4.10. Чтение табличных или CSV-данных из интернета ......................................................109
4.11. Чтение данных из Excel  .................................................................................................110
4.12. Запись таблицы данных в Excel  ....................................................................................111
4.13. Чтение данных из файла SAS ........................................................................................113
4.14. Чтение данных из таблиц HTML ...................................................................................115
4.15. Чтение файлов со сложной структурой  .......................................................................117
4.16. Чтение из баз данных MySQL ........................................................................................121
4.17. Доступ к базе данных с помощью dbplyr  .....................................................................124
4.18. Сохранение и транспортировка объектов ....................................................................125

Глава 5. Структуры данных  ....................................................................................128

5.1. Добавление данных в вектор ..........................................................................................135
5.2. Вставка данных в вектор .................................................................................................136
5.3. Правило повторного использования  .............................................................................137
5.4. Создание фактора (категориальной переменной)  .......................................................139
5.5. Объединение нескольких векторов в один вектор и фактор  .......................................140
5.6. Создание списка ...............................................................................................................141
5.7. Выбор элементов по месту в списке ...............................................................................143
5.8. Выбор элементов списка по имени ................................................................................144
5.9. Создание ассоциативного списка «имя/значение» .......................................................146
5.10. Удаление элемента из списка ........................................................................................147
5.11. Преобразование списка в вектор ..................................................................................148
5.12. Удаление элементов NULL из списка ............................................................................149
5.13. Удаление элементов списка с использованием условия .............................................150
5.14. Инициализация матрицы ..............................................................................................152
5.15. Операции с матрицами .................................................................................................153
5.16.  Задание описательных имен для строк  
и столбцов матрицы .......................................................................................................154

6  Оглавление
6  Оглавление

5.17. Выбор одной строки или столбца из матрицы .............................................................155
5.18. Инициализация таблицы данных из данных столбца .................................................156
5.19. Инициализация таблицы данных из данных строки ..................................................157
5.20. Добавление строк в таблицу данных ............................................................................160
5.21. Выбор столбцов таблицы по их месту в таблице данных ............................................162
5.22. Выбор столбцов таблицы данных по имени ................................................................165
5.23. Изменение имен столбцов таблицы данных ...............................................................167
5.24. Удаление значений NA из таблицы данных .................................................................168
5.25. Исключение столбцов по имени ...................................................................................169
5.26. Объединение двух таблиц данных ................................................................................170
5.27. Объединение таблиц данных по общему столбцу .......................................................171
5.28. Приведение атомарных типов данных .........................................................................173
5.29. Приведение структурированных типов данных  .........................................................174

Глава 6. Преобразование данных ......................................................................177

6.1. Применение функции ко всем элементам списка  ........................................................177
6.2. Применение функции к каждой строке таблицы данных .............................................179
6.3. Применение функции к каждой строке матрицы .........................................................180
6.4. Применение функции к каждому столбцу .....................................................................182
6.5. Применение скалярной функции к векторам или спискам .........................................183
6.6. Применение функции к группам данных ......................................................................186
6.7. Создание нового столбца по условию  ............................................................................187

Глава 7. Строки и даты ...............................................................................................189

7.1. Получение длины строки .................................................................................................191
7.2. Конкатенация строк .........................................................................................................191
7.3. Извлечение подстрок .......................................................................................................192
7.4. Разбиение строки по разделителю  .................................................................................193
7.5. Замена подстрок ...............................................................................................................195
7.6. Генерация всех попарных комбинаций строк ................................................................195
7.7. Получение текущей даты .................................................................................................197
7.8. Преобразование строки в дату ........................................................................................197
7.9. Преобразование даты в строку ........................................................................................198
7.10. Преобразование года, месяца и дня в объект Date ......................................................199
7.11. Получение даты по юлианскому календарю ................................................................200
7.12. Извлечение частей даты ................................................................................................201
7.13. Создание последовательности дат ................................................................................202

Глава 8. Вероятность ..................................................................................................204

8.1. Подсчет количества комбинаций ....................................................................................206
8.2. Генерация комбинаций ...................................................................................................206
8.3. Генерация случайных чисел ............................................................................................207
8.4. Генерация воспроизводимых случайных чисел ............................................................209
8.5. Генерация случайной выборки .......................................................................................210
8.6. Генерация случайных последовательностей ..................................................................212
8.7. Случайная перестановка вектора ....................................................................................213
8.8. Расчет вероятностей для дискретных распределений ..................................................213
8.9. Расчет вероятностей для непрерывных распределений ...............................................215
8.10. Преобразование вероятностей в квантили ..................................................................216
8.11. Построение графика функции плотности ....................................................................217

Оглавление  7
  7

Глава 9. Общая статистика ......................................................................................222

9.1. Получение сводки данных ...............................................................................................224
9.2. Расчет относительных частот ..........................................................................................226
9.3. Представление факторов в виде таблицы и создание таблиц сопряженности ...........227
9.4. Проверка категориальных переменных на независимость ..........................................228
9.5. Расчет квантилей (и квартилей) набора данных ...........................................................229
9.6. Инвертирование квантиля ..............................................................................................230
9.7. Преобразование данных в z-оценки ...............................................................................230
9.8. Проверка среднего значения выборки (t-критерий) .....................................................231
9.9. Формирование доверительного интервала для среднего значения ............................233
9.10. Формирование доверительного интервала для медианы ...........................................234
9.11. Тестирование доли выборки .........................................................................................235
9.12. Формирование доверительного интервала для доли ..................................................236
9.13. Проверка на нормальность............................................................................................237
9.14. Тест последовательностей .............................................................................................238
9.15. Сравнение средних значений двух выборок ................................................................239
9.16. Непараметрическое сравнение местоположений двух выборок  ...............................241
9.17. Проверка значимости корреляции ...............................................................................242
9.18. Проверка групп на предмет наличия равных пропорций ..........................................244
9.19. Парные сравнения между средними значениями групп ............................................245
9.20.  Проверка двух выборок, чтобы определить, принадлежат ли они  
одному закону распределения ......................................................................................246

Глава 10. Графики .........................................................................................................248

10.1. Создание точечной диаграммы ....................................................................................252
10.2. Добавление заголовка и меток ......................................................................................253
10.3. Добавление (или удаление) координатной сетки ........................................................254
10.4. Применение темы к графику ggplot .............................................................................258
10.5. Создание точечной диаграммы ....................................................................................261
10.6. Добавление (или удаление) условных обозначений ...................................................263
10.7. Построение регрессионной линии точечной диаграммы ...........................................267
10.8. Построение точечных диаграмм ...................................................................................270
10.9. Создание по одной точечной диаграмме .....................................................................272
10.10. Создание гистограммы ................................................................................................274
10.11. Добавление доверительных интервалов в гистограмму ...........................................276
10.12. Раскраска гистограммы ...............................................................................................279
10.13. Построение линии из точек x и y .................................................................................281
10.14. Изменение типа, ширины или цвета линии ..............................................................282
10.15. Построение нескольких наборов данных ...................................................................285
10.16. Добавление вертикальных или горизонтальных линий ...........................................286
10.17. Создание диаграммы размаха  ....................................................................................288
10.18. Создание диаграммы размаха для каждого уровня фактора ....................................290
10.19. Создание гистограммы ................................................................................................292
10.20. Добавление оценки плотности к гистограмме ..........................................................293
10.21. Создание графика квантиль-квантиль .......................................................................295
10.22. Создание других графиков квантиль-квантиль .........................................................297
10.23. Построение переменной в нескольких цветах ..........................................................300
10.24. График функции ...........................................................................................................302
10.25. Отображение нескольких графиков на одной странице ...........................................304

8  Оглавление

Глава 11. Линейная регрессия и дисперсионный анализ ...................309

11.1. Простая линейная регрессия .........................................................................................311
11.2. Множественная линейная регрессия ............................................................................313
11.3. Получение регрессионной статистики .........................................................................314
11.4. Общая информация о регрессии ...................................................................................318
11.5. Линейная регрессия без свободного члена ..................................................................321
11.6.  Регрессия только тех переменных, которые сильно коррелируют 
с вашей зависимой переменной ...................................................................................322

11.7. Линейная регрессия с эффектами взаимодействия ....................................................325
11.8. Выбор наиболее подходящих переменных регрессии ................................................327
11.9. Регрессия для подмножества данных ...........................................................................331
11.10. Использование выражения в формуле регрессии .....................................................333
11.11. Полиномиальная регрессия .........................................................................................334
11.12. Регрессия на преобразованных данных .....................................................................335
11.13. Поиск наиболее подходящего степенного преобразования (тест Бокса–Кокса) ......... 337
11.14. Формирование доверительных интервалов для коэффициентов регрессии ..........342
11.15. Построение невязок регрессии ...................................................................................342
11.16. Диагностика линейной регрессии ..............................................................................344
11.17. Обнаружение влиятельных наблюдений ....................................................................348
11.18.  Тестирование невязок на наличие автокорреляции  
(критерий Дарбина–Уотсона) ......................................................................................349

11.19. Предсказываем новые значения .................................................................................351
11.20. Формирование интервалов предсказаний .................................................................352
11.21. Однофакторный дисперсионный анализ ...................................................................352
11.22. Создание диаграммы взаимодействия .......................................................................354
11.23. Находим различия между средними значениями групп ..........................................356
11.24. Устойчивый дисперсионный анализ (критерий Краскела–Уоллиса) .......................358
11.25. Сравнение моделей с использованием функции anova ............................................360

Глава 12. Полезные хитрости ...............................................................................362

12.1. Просмотр данных ...........................................................................................................362
12.2. Вывод на экран результата присваивания ...................................................................364
12.3. Суммирование строк и столбцов ..................................................................................365
12.4. Вывод данных в столбцах ..............................................................................................366
12.5. Объединение данных .....................................................................................................367
12.6. Поиск положения определенного значения ................................................................368
12.7. Выбор каждого n-го элемента вектора .........................................................................368
12.8. Поиск минимумов или максимумов ............................................................................369
12.9. Генерация всех комбинаций нескольких переменных ...............................................371
12.10. Преобразование таблицы данных ...............................................................................372
12.11. Сортировка таблицы данных .......................................................................................373
12.12. Удаление атрибутов из переменной ...........................................................................374
12.13. Раскрываем структуру объекта ...................................................................................375
12.14. Определяем время выполнения кода .........................................................................378
12.15. Избавляемся от предупреждений и сообщений об ошибках ....................................379
12.16. Извлечение аргументов функции из списка ..............................................................380
12.17. Определение собственных бинарных операторов .....................................................382
12.18. Избавляемся от сообщения о запуске .........................................................................383
12.19. Получение и настройка переменных среды ...............................................................384

Оглавление  9

12.20. Разбиение кода на секции ...........................................................................................385
12.21. Локальная параллелизация выполнения кода  ..........................................................386
12.22. Удалённая параллелизация выполнения кода  ..........................................................388

Глава 13. За пределами основных цифр и статистики  ........................392

13.1. Минимизация или максимизация однопараметрической функции .........................392
13.2. Минимизация или максимизация многопараметрической функции .......................393
13.4. Метод главных компонент ............................................................................................396
13.5. Простая ортогональная регрессия ................................................................................397
13.6. Поиск кластеров в данных .............................................................................................399
13.7. Прогнозирование бинарной переменной (логистическая регрессия) .......................402
13.8. Бутстрэппинг ..................................................................................................................404
13.9. Факторный анализ .........................................................................................................406

Глава 14. Анализ временных рядов ..................................................................411

14.1. Представление данных временного ряда.....................................................................412
14.2. Построение данных временных рядов .........................................................................415
14.3. Извлечение самых старых или самых последних наблюдений ..................................417
14.4. Выбор элементов из временного ряда .........................................................................419
14.5. Объединение нескольких временных рядов ................................................................421
14.6. Заполнение временного ряда........................................................................................423
14.7. Смещение временного ряда ..........................................................................................425
14.8. Вычисление последовательных различий ...................................................................427
14.9. Выполнение расчетов по временным рядам ...............................................................428
14.10. Вычисление скользящей средней ...............................................................................429
14.11. Применение функции по календарному периоду .....................................................431
14.12. Применение функции rollapply ...................................................................................433
14.13. Построение функции автокорреляции .......................................................................434
14.14. Тестирование временного ряда на наличие автокорреляций ..................................436
14.15. Построение функции частичной автокорреляции ....................................................437
14.16. Поиск корреляций с временным лагом между двумя временными рядами ...........439
14.17. Удаление тренда из временного ряда .........................................................................440
14.18. Подгонка модели ARIMA ..............................................................................................443
14.19. Удаление незначимых коэффициентов ARIMA .........................................................446
14.20. Выполнение диагностики для модели ARIMA ...........................................................448
14.21. Прогнозирование по модели ARIMA ..........................................................................450
14.22. Построение прогноза ...................................................................................................451
14.23. Тестирование на наличие возвращения к среднему  ................................................452
14.24. Сглаживание временного ряда ...................................................................................455

Глава 15. Простое программирование  ..........................................................457

15.1. Выбор из двух альтернатив: if/else ...............................................................................458
15.2. Итерация с помощью цикла ..........................................................................................460
15.3. Определение функции ...................................................................................................461
15.4. Создание локальной переменной  ................................................................................462
15.5. Выбор из нескольких альтернатив: функция switch ....................................................463
15.6. Определение значений по умолчанию для параметров функции .............................464
15.7. Подать сигнал с помощью сообщения об ошибке........................................................465

10  Оглавление

15.8. Защита от ошибок ..........................................................................................................466
15.9. Создание анонимной функции .....................................................................................467
15.10. Создание коллекции многократно используемых функций ....................................468
15.11. Автоматическое форматирование кода .....................................................................469

Глава 16. R Markdown и публикации  ...............................................................471

16.1. Создание нового документа ..........................................................................................472
16.2. Добавление заголовка, автора или даты ......................................................................474
16.3. Форматирование текста документа ..............................................................................476
16.4. Вставка заголовков документов ....................................................................................476
16.5. Вставка списка ................................................................................................................477
16.6. Вывод результатов из кода R .........................................................................................478
16.7. Контролируем, какой код и результаты отображаются ...............................................480
16.8. Вставка графика .............................................................................................................481
16.9. Вставка таблицы .............................................................................................................484
16.10. Вставка таблицы данных .............................................................................................485
16.11. Вставка математических уравнений ..........................................................................488
16.12. Генерация вывода HTML ..............................................................................................488
16.13. Генерация вывода в формате PDF ...............................................................................490
16.14. Генерация вывода в формате Microsoft Word .............................................................492
16.15. Генерация выходных данных презентации ...............................................................498
16.16. Создание параметризованного отчета .......................................................................500
16.17. Организация рабочего процесса в R Markdown ..........................................................503

Об авторах  .......................................................................................................................506

Колофон .............................................................................................................................506

Предметный указатель .............................................................................................507

От редакции .....................................................................................................................508

Оглавление  11

Предисловие редактора

Более двадцати лет назад, ещё в прошлом тысячелетии, в далёкой, далёкой, почти 
сказочной Новой Зеландии два статистика Джентельмен и Айхэка из Оклендского 
университета породили ещё один язык программирования. Немного подумали 
и назвали его R. 

С тех пор, для того, чтобы вы могли легко и непринуждённо посчитать медиану, построить линейную модель, найти кластеры или, страшно подумать, размножить ваш набор данных для целей бутстрэпа, десятки, а возможно, и сотни тысяч 
квалифицированных и разных любителей статистической обработки данных положили на алтарь с буквой R самое ценное. Да, да – своё время! Пользуйтесь этой 
программой с уважением.
Когда мы (группа едва знакомых по интернету) чуть больше десяти лет назад 

начали цикл статей «Анализ данных с R» в ещё живой и бумажный журнал Linux 
Format, никакой печатной продукции, да и вообще хоть сколько-нибудь исчерпывающей информации на русскоязычном пространстве по этой теме просто не 
было. Хотя во всём остальном мире статистики R захватывал университет за университетом. Чуть позже благодаря усилиям лидера группы биолога Алексея Шипунова из этого цикла родилась первая значительная (мы честно на тот момент 
так думали) R-книга на русском языке «Наглядная статистика. Используем R!», 
выпущенная издательством «ДМК Пресс» в 2012 году и находящаяся сейчас в открытом доступе на CRAN для всех желающих.
Поэтому отрадно сейчас видеть, что мировая литература в области R-анализа 

уже достаточно регулярно, хоть и с задержкой, добирается до наших краёв. R – 
это просто. По сути, сборник рецептов является самым замечательным форматом для его практического применения. Другое дело – сам сборник рецептов – 
это только начало, потому что возможности R безграничны! В области обработки 
статистики, естественно.

Евгений Балдин, к. ф.-м. н.

Добро пожаловать 
в книгу рецептов R

Язык R представляет собой мощный инструмент для статистики, графики и статистического программирования. Он ежедневно используется десятками тысяч 
людей для проведения серьезного статистического анализа. Это бесплатная система с открытым исходным кодом, реализация которой является коллективным 
достижением большого числа умных, трудолюбивых людей. Для этого языка существует свыше 10 000 доступных пакетов дополнений. R является серьезным 
конкурентом всех коммерческих пакетов для статической обработки данных.
Но R может расстраивать, и может быть не ясно, как выполнить множество задач, даже простых. Простые задачи становятся легкими, когда вы знаете, как это 
сделать, но при этом понимаете, что это слово «как» может свести с ума.
Эта книга полна практических рецептов, каждый из которых решает определенную проблему. Каждый рецепт включает в себя краткое введение в решение, 
а затем обсуждение, целью которого является объяснить решение и дать вам 
представление относительно того, как оно работает. Мы знаем, что эти рецепты 
полезны, и знаем, что они работают, потому что сами используем их.
Диапазон рецептов обширен. Он начинается с основных задач, а затем переходит к вводу и выводу, общей статистике, графике и линейной регрессии. Любая значительная работа с R будет включать в себя большинство этих областей или их все.
Если вы новичок, то эта книга поможет вам быстрее сориентироваться. Если 

вы промежуточный пользователь, эта книга будет полезна, чтобы расширить ваш 
кругозор и покопаться в памяти («Как снова выполнить этот тест Колмогорова–
Смирнова?»).
Данная книга не является учебником по языку R, хотя вы и узнаете что-то, 

изучая рецепты. Это не справочное руководство, но в ней содержится много полезной информации. Это не книга по программированию на R, хотя многие рецепты полезны в сценариях, написанных на этом языке.
Наконец, эта книга не является введением в статистику. Многие рецепты предполагают, что вы знакомы с базовой статистической процедурой, если таковая 
имеется, и просто хотите знать, как это делается в R.

Рецепты
В большинстве рецептов используется одна или две функции R для решения 
конкретной задачи. Важно помнить, что мы не описываем функции подробно; 
скорее, мы приводим достаточно описания, чтобы решить насущную проблему. Почти каждая такая функция имеет дополнительные возможности, помимо 
описанных здесь, а некоторые из них обладают удивительными возможностями. 

Мы настоятельно рекомендуем вам прочитать страницы справки по функциям. 
Скорее всего, вы узнаете что-нибудь ценное.
Каждый рецепт предлагает один из способов решения конкретной задачи. Конечно, для каждой задачи существует несколько разумных решений. Когда нам 
было известно несколько вариантов решения, мы обычно выбирали самое простое. Для любой задачи вы, вероятно, сможете найти несколько альтернативных 
решений самостоятельно. Это книга рецептов, а не Библия.
В частности, R имеет буквально тысячи дополнительных пакетов, доступных 

для скачивания, многие из которых реализуют альтернативные алгоритмы и статистические методы. Эта книга концентрируется на основных функциях, доступных через базовый дистрибутив, в сочетании с несколькими важными пакетами, 
известными под общим названием tidyverse.
Наиболее краткое определение этого термина дает Хэдли Уикхем (https://blog.
rstudio.com/2016/09/15/tidyverse-1-0-0/), его создатель и один из его основных разработчиков:

Tidyverse – это набор пакетов, которые работают в гармонии, потому что они имеют 
общие представления данных и дизайн API. Пакет tidyverse разработан, чтобы упростить установку и загрузку основных пакетов из tidyverse одной командой. Лучшее место, чтобы познакомиться со всеми пакетами в tidyverse и их совместимостью, – это 
книга R for Data Science (https://r4ds.had.co.nz). 

пРимечание относительно теРминологии 

Цель каждого рецепта – решить задачу и сделать это быстро. Вместо того чтобы 
работать в утомительной прозе, мы иногда упорядочиваем описание с помощью 
терминологии, которая является правильной, но не точной. В качестве неплохого примера можно привести термин обобщенная функция. Мы называем print(x) 
и plot(x) обобщенными функциями, потому что они работают для многих видов 
x, соответственно обрабатывая каждый вид. Специалист, работающий в области 
тео рии вычислительных машин и систем, вздрогнет при виде нашей терминологии, потому что, строго говоря, это не просто «функции»; это полиморфные 
методы с динамической диспетчеризацией. Но если бы мы тщательно расшифровывали все эти подробности, основные решения были бы погребены под техническими деталями. Поэтому мы называем их просто функциями, что, как нам 
кажется, более читабельно.
Еще один пример, взятый из статистики, – это сложность, связанная с семантикой проверки статистических гипотез. Использование строгого языка теории 
вероятностей затруднит практическое применение некоторых тестов, поэтому мы 
используем более разговорный язык при описании всех статистических тестов. См. 
введение к главе 9 для получения дополнительной информации о том, как проверка гипотез представлена в рецептах.
Наша цель состоит в том, чтобы сделать мощь языка R доступной для широкой 

аудитории, сделав книгу читабельной, а не формальной. Мы надеемся, что эксперты в соответствующих областях поймут, является ли наша терминология неформальной.

14  
Добро пожаловать в книгу рецептов R

пРимечания по пРогРаммному обеспечению и платфоРмам

Базовый дистрибутив R имеет частые и запланированные выпуски, но определение языка и реализация ядра стабильны. Рецепты, приведенные в этой книге, 
должны работать с любым последним выпуском базового дистрибутива.
Некоторые рецепты имеют специфические для платформы соображения, и мы 

тщательно их отметили. Эти рецепты в основном касаются проблем, связанных 
с программным обеспечением, таких как установка и настройка. Насколько нам 
известно, все остальные рецепты будут работать на всех трех основных платформах для R: Windows, macOS и Linux/Unix.

Дополнительные источники

Ниже приводится ряд советов для получения дополнительной информации.

В сети
Своего рода «основа» для всего, что связано с R, – сайт проекта R (https://
www.r-project.org). Отсюда вы можете скачать R для своей платформы, дополнительные пакеты, документацию и исходный код, а также множество других 
ресурсов.
Помимо сайта проекта R, мы рекомендуем использовать R-поисковик, например 
RSeek (https://rseek.org), созданный Сашей Гудманом. Вы можете использовать 
общую поисковую систему, такую как Google, но при применении «R» в качестве поискового запроса выдается слишком много посторонних вещей. См. рецепт 1.11 для получения дополнительной информации о поиске в интернете.
Чтение блогов – отличный способ узнать о R и быть в курсе самых передовых разработок. Таких блогов на удивление много, поэтому мы рекомендуем 
два из них: R-bloggers (https://www.r-bloggers.com), созданный Талом Галили, 
и PlanetR (http://planetr.stderr.org). Подписавшись на их RSS-каналы, вы будете 
получать уведомления об интересных и полезных статьях с десятков сайтов.

Книги
Есть много, много книг об обучении и использовании R. Перечисленные здесь 
несколько изданий мы нашли полезными. Обратите внимание, что сайт проекта R содержит обширную библиографию книг, связанных с R (https://www.rproject.org/doc/bib/R-books.html). 
R for Data Science (http://shop.oreilly.com/product/0636920034407.do) Хэдли Уикхэма и Гарретта Гроулмунда (издательство O’Reilly) – отличное введение в пакеты tidyverse, особенно в том, что касается их использования в анализе данных 
и статистике. Данное издание также доступно онлайн (https://r4ds.had.co.nz). 
Мы полагаем, что книга R Graphics Cookbook (http://shop.oreilly.com/
product/0636920063704.do) Уинстона Чанга (издательство O’Reilly) незаменима 
для создания графики. Книга ggplot2: Elegant Graphics for Data Analysis Хэдли 
Уикхэма (издательство Springer) представляет собой наиболее полный справочник по графическому пакету ggplot2, который мы используем в этой книге.
Любому, кто занимается серьезной графикой в  R, понадобится книга R Graphics Пола Мёррелла (издательство Chapman & Hall / CRC).
R in a Nutshell (http://shop.oreilly.com/product/9780596801717.do) Джозефа Адлера 

Добро пожаловать в книгу рецептов R  15

(издательство O’Reilly) – это краткое руководство и справочник, который всегда будет рядом с вами. Оно охватывает гораздо больше тем, нежели эта книга рецептов.
Новые книги по программированию на языке R появляются регулярно. Мы 
предлагаем Hands On Programming with R (https://www.oreilly.com/library/view/
hands-on-programming-with/9781449359089/) Гарретта Гроулмунда (издательство 
O’Reilly) для введения или The Art of R Programming Нормала Мэтлоффа (издательство No Starch Press). Advanced R Хэдли Уикхэма (издательство Chapman & 
Hall / CRC) доступна в печатном виде, а также бесплатно на странице http://adv-r.
had.co.nz. В ней еще более подробно представлены продвинутые темы R. Efficient 
R Programming (http://shop.oreilly.com/product/0636920047995.do) Колина Гиллеспи и Робина Ловеласа (издательство O’Reilly) – еще одно хорошее руководство 
для изучения более глубоких концепций программирования на языке R.
Modern Applied Statistics with S, 4-е изд., Уильяма Венейблса и Брайана Рипли 
(Springer) использует R для иллюстрации множества передовых статистических методов. Функции и наборы данных книги доступны в пакете MASS, который входит в стандартный дистрибутив R.
Серьезные фанаты могут скачать R Language Definition (https://cran.r-project.org/
doc/manuals/R-lang.pdf) от R Core Team. R Language Definition находится в стадии 
разработки, но может ответить на многие ваши подробные вопросы о R как 
о языке программирования.
Книги по статистике 
Для изучения статистики прекрасно подойдет Using R for Introductory Statistics 
Джона Верзани (издательство Chapman & Hall / CRC). Эта книга обучает статистике и R, давая необходимые навыки работы с компьютером для применения 
статистических методов.
Вам понадобится хороший учебник по статистике или справочник, чтобы 
точно интерпретировать статистические тесты, выполненные в R. Подобных 
хороших книг множество – их слишком много, чтобы можно было рекомендовать какую-либо одну.
Авторы книг по статистике все чаще используют R для иллюстрации своих 
методов. Если вы работаете в специализированной области, то, вероятно, найдете полезную и актуальную книгу в библиографии проекта R (https://www.rproject.org/doc/bib/R-books.html). 

условные обозначения и соглашения, пРинятые в книге 

В книге используются следующие типографские соглашения.
Курсив используется для смыслового выделения новых терминов, адресов 

элект ронной почты, а также имен и расширений файлов.
Моноширинный шрифт применяется для листингов программ, а также в обычном 

тексте для обозначения имен переменных, функций, типов, объектов, баз данных, 
переменных среды, операторов и ключевых слов.
Моноширинный полужирный шрифт используется для обозначения команд или фрагментов текста, которые пользователь должен ввести дословно без изменений.
Моноширинный курсив – для обозначения в исходном коде или в командах шаблонных меток-заполнителей, которые должны быть заменены соответствующими 
контексту реальными значениями.

16  
Добро пожаловать в книгу рецептов R

 

Этот элемент означает подсказку или предложение.

 

 

Этот элемент означает общее примечание.

 

Этот элемент указывает на предупреждение или предостережение.

использование пРимеРов коДа

Дополнительный материал (примеры кода, исходный код, упражнения и т. д.) доступен для скачивания на странице http://rc2e.com. Аккаунт в Twitter, посвященный этой книге, – @R_cookbook (https://twitter.com/R_cookbook).
Данная книга призвана помочь вам выполнить свою работу. В общем, вы можете использовать код из этой книги в своих программах и документации. Вам 
не нужно обращаться к нам за разрешением, если вы не воспроизводите значительную часть кода. Например, для написания программы, в которой используется несколько фрагментов кода из этой книги, оно не требуется. Продажа или распространение CD-ROM с примерами из книг O’Reilly требует разрешения. Чтобы 
ответить на вопрос, сославшись на эту книгу и приведя пример кода, разрешение 
не требуется. Включение значительного количества примеров кода из этой книги 
в документацию вашего продукта требует разрешения.
Атрибуция желательна, но не является обязательной. Обычно она включает в себя 

название книги, автора, издателя и ISBN. Например: «Книга рецептов R, 2-е изд., 
Дж. Д. Лонг и Пол Титор. Copyright 2019 Дж. Лонг и Пол Титор, 978-1-492-04068-2».
Если вы считаете, что применение примеров кода выходит за рамки добросовестного использования или только что описанного разрешения, свяжитесь 
с нами по адресу permissions@oreilly.com.

обучение в Режиме онлайн

На протяжении почти 40 лет O’Reilly Media (https://www.oreilly.com) предоставляет 
технологии и бизнес-тренинги, знания и анализ, чтобы помочь компаниям добиваться успеха.
Наша уникальная сеть экспертов и новаторов делится своими знаниями и опытом через книги, статьи, конференции и нашу онлайн-платформу обучения. Платформа онлайн-обучения O’Reilly предоставляет доступ по требованию к курсам 
обучения в режиме реального времени, углубленным способам обучения, интерактивным средам кодирования и обширной коллекции текстов и видео от 
O’Reilly и свыше 200 других издательств. Для получения дополнительной информации, пожалуйста, посетите сайт http://oreilly.com. 

Добро пожаловать в книгу рецептов R  17

Доступ онлайн
1 124 ₽
В корзину