Документация по R
Краткий справочник по R с примерами. Прочитай концепцию, посмотри код, а затем потренируйся в курсе Coddy.
Начало работы
- Что такое R?Что представляет собой язык программирования R, откуда он появился, для чего используется и как соотносится с Python - плюс первый запускаемый пример кода на R.
- Установка RКак скачать R с CRAN и установить его на Windows, macOS или Linux, а также RStudio - IDE, в которой пишет на R почти каждый.
- Запуск R-скриптаВсе способы запуска кода на R: интерактивная консоль, Rscript из командной строки, source() внутри R и команды Run и Source в RStudio.
- Синтаксис RЯдро синтаксиса R: присваивание через <-, выражения и автопечать, вызовы функций с именованными аргументами и правило «всё есть вектор».
- КомментарииКак устроены комментарии в R: символ #, почему в R нет настоящего многострочного комментария, горячая клавиша RStudio для закомментирования блоков и что должен говорить хороший комментарий.
Переменные и данные
- ПеременныеКак создавать переменные в R стрелкой <-, когда вместо неё обязателен =, правила именования и как выводить и удалять переменные с помощью ls() и rm().
- Типы данныхАтомарные типы данных в R — double, integer, character, logical — а также чем отличаются typeof() и class() и как работают преобразование и приведение типов.
- ЧислаРабота с числами в R: numeric против integer, семейство функций округления, sqrt и log, оператор остатка %% и специальные значения Inf и NaN.
- СтрокиВсё необходимое для работы с текстом в R: создание строк, склейка через paste и paste0, форматирование через sprintf и поиск через gsub, grepl и strsplit.
- Ввод и выводКак устроен вывод в R — автопечать, print() против cat(), message() — и как читать пользовательский ввод через readline() и readLines().
Поток управления
- ОператорыВсе нужные операторы R — арифметические, включая %% и %/%, векторные сравнения, различие между & и && и %in% для проверки вхождения.
- If / ElseУсловная логика в R — синтаксис if/else if/else, ловушка фигурных скобок, ломающая скрипты, векторизованный ifelse() для целых векторов и switch() для множественного выбора.
- Циклы forКак работают циклы for в R — обход векторов и индексов, сбор результатов без ловушки растущего вектора, next и break и случаи, когда векторизованный вызов лучше цикла.
- Циклы whileКак работают циклы while в R — проверка условия в начале, repeat с break как аналог do-while, next и привычки, которые уберегают от бесконечных циклов.
Структуры данных
- ВекторыВектор — фундаментальная единица R, даже одиночное число является вектором. Как создавать их через c(), индексировать (с единицы!), фильтровать логическими масками и считать сразу по всему вектору.
- СпискиСписки — универсальный контейнер R: смешанные типы, вложенные структуры, целые датафреймы. Ключевой навык — понимать, когда [ возвращает меньший список, а когда [[ возвращает сам элемент.
- МатрицыКак строить матрицы через matrix(), cbind() и rbind(), индексировать строки и столбцы и не путать поэлементное * с настоящим матричным умножением %*%.
- ФакторыФакторы — это способ хранения категориальных данных в R: целочисленные коды, надевшие текстовые метки. Как их создавать, упорядочивать, задавать базовый уровень и не попасть в ловушку преобразования фактора в число.
- ДатафреймыДатафрейм — это электронная таблица R: именованные столбцы одинаковой длины, каждый со своим типом. Как построить его, оценить через str() и head() и добраться до столбцов, строк и ячеек.
- Пропущенные значения (NA)NA означает «неизвестно» — и оно расползается по каждому вычислению, которого касается. Как обнаружить его через is.na(), пропустить через na.rm = TRUE и осознанно удалить или заменить.
Функции и пакеты
- ФункцииКак создать функцию в R — синтаксис function(x) { }, возвращаемые значения, значения по умолчанию и именованные аргументы, многоточие ..., анонимные функции и работа областей видимости.
- Семейство applyСемейство apply — apply, lapply, sapply, vapply, mapply и tapply — прогоняет функцию по каждому элементу ваших данных. Вот что делает каждая из них и когда за какой браться.
- ПайпыЧто означает %>%, как работает встроенный пайп базового R |>, правила и подстановочные символы каждого из них и какой выбирать в новом коде.
- ПакетыКак устроены пакеты R: установка с CRAN через install.packages(), загрузка через library(), require() против library(), pkg::fun() и пакеты, которые стоит знать.
- Рабочий каталогГде R ищет файлы и как этим управлять: getwd(), setwd(), list.files(), очистка окружения через rm(list = ls()) и почему автосохранение .RData — ловушка.
Обработка данных
- dplyrЧто такое dplyr, как его установить и как шесть основных глаголов вместе с пайпом превращают запутанный код работы с данными в читаемые конвейеры.
- Фильтрация и выборкаВсе способы оставить нужные строки и столбцы: логические маски со скобками, однострочник subset(), %in%, ловушки NA и filter() с select() из dplyr.
- Добавить столбцы (mutate)Как добавлять, преобразовывать и удалять столбцы датафрейма: df$new <- ..., ifelse() для условных столбцов, transform() и mutate() из dplyr с case_when().
- Переименование столбцовПереименование столбцов датафрейма в R: names() и colnames(), переименование по позиции и по имени, setNames(), dplyr rename() и очистка грязных импортированных заголовков.
- СортировкаКак на самом деле работает сортировка в R: sort() для векторов, почему датафреймам нужен приём с индексами order(), сортировка по убыванию и по нескольким столбцам и arrange() из dplyr.
- Группировка и сводкиВсе способы посчитать статистики по группам в R: подсчёт через table(), tapply() для одной статистики на группу, формульный интерфейс aggregate() и group_by() с summarize() из dplyr.
- Объединения и соединенияОбъединение датафреймов по общему ключу: merge() для внутреннего, левого, правого и полного соединения, разные имена ключей через by.x/by.y, семейство соединений dplyr и rbind() для склейки строк.
- Пивот (перестройка)Широкий и длинный форматы данных и как между ними переходить: pivot_longer() и pivot_wider() из tidyr, старые имена spread/gather и reshape() из базового R.
Импорт и экспорт
- Чтение CSVКак импортировать CSV-файлы в R через read.csv() — важные аргументы, ловушка рабочего каталога, вызывающая большинство сбоев, и когда стоит взять readr::read_csv.
- Чтение ExcelR не умеет открывать файлы .xlsx сам по себе — этот пробел закрывает пакет readxl. Как читать листы, диапазоны и заголовки, писать обратно в Excel и обходить классические ловушки импорта.
- Запись CSV и RDSЭкспорт из R: write.csv с row.names = FALSE (всегда), write.table для других разделителей и saveRDS для полного цикла без потери типов.
- ДатыКласс Date в R — это счётчик дней в костюме. Как разбирать строки через as.Date, форматировать даты для вывода, вычитать их, строить последовательности и когда вместо этого нужен POSIXct.
Графики
- plot()Как работает функция plot() в R — типы графиков, заголовки и подписи осей, цвета, символы точек (pch), наслоение через lines() и abline() и легенды.
- ГистограммаКак построить гистограмму в R с помощью hist() — выбор интервалов, оформление столбцов, переход на шкалу плотности, наложение нормальной кривой и версия на ggplot2.
- Ящик с усамиКак построить ящик с усами в R через boxplot() — чтение ящика и усов, формульный интерфейс для сравнения групп, оформление и числа, стоящие за графиком.
- Диаграмма рассеянияКак построить диаграмму рассеяния в R — нарисовать две переменные через plot(), добавить линию регрессии через abline(lm()), сгладить через lowess() и построить матрицу pairs().
- Столбчатая диаграммаКак построить столбчатую диаграмму в R через barplot() — из именованного вектора или table(), сгруппированные и накопленные столбцы из матрицы, оформление и geom_col против geom_bar.
- ggplot2Как работает ggplot2 — мысленная модель «данные + aes() + geom», отображение против фиксированной настройки, labs(), facet_wrap(), темы и сохранение через ggsave().
Статистика
- Описательные статистикиКак сводить данные в R: mean(), median(), sd(), var(), summary(), quantile() — что считает каждая, деталь про n−1 за sd() и почему mode() в R является ловушкой.
- КорреляцияИзмерьте, как две переменные движутся вместе, через cor(), проверьте реальность связи через cor.test() и просканируйте сразу много переменных корреляционной матрицей.
- t-критерийЗапускайте одновыборочный, двухвыборочный и парный t-критерий через t.test() и — что действительно важно — читайте каждую строку вывода: t, df, p-значение, доверительный интервал.
- Дисперсионный анализСравнивайте средние трёх и более групп через aov(), читайте таблицу дисперсионного анализа ячейка за ячейкой и выясняйте, какие группы действительно различаются, через TukeyHSD().
- Линейная регрессияПодгоните регрессию через lm(), прочитайте каждый блок summary() — коэффициенты, стандартные ошибки, p-значения, R-квадрат, F-статистику — и делайте прогнозы через predict().
- Логистическая регрессияМоделируйте бинарные исходы через glm(family = binomial): читайте сводку, переводите коэффициенты в логарифмах шансов в отношения шансов через exp() и правильно получайте предсказанные вероятности.
- Доверительные интервалыПолучайте доверительные интервалы для средних, долей и коэффициентов моделей — t.test(), prop.test(), confint() — а также узнайте, что на самом деле означает «95% уверенности» и как размер выборки задаёт ширину.
- Случайные числаГенерируйте случайные данные через rnorm(), runif(), rbinom() и sample(), делайте их воспроизводимыми через set.seed() и расшифруйте систему имён d/p/q/r для распределений.