Шпаргалка по R
Последнее обновление
Hello World и присваивание
Идиоматичный оператор присваивания в R - это <- (оператор = тоже работает).
| Операция | Синтаксис |
|---|---|
| Вывести значение | print("Hello, World!") |
| Автовывод (консоль) | "Hello, World!" |
| Объединить и вывести | cat("Hi", name, "\n") |
| Присваивание (идиоматичное) | x <- 5 |
| Присваивание (тоже допустимо) | x = 5 |
| Присваивание вправо | 5 -> x |
| Комментарий | # this is a comment |
| Запустить скрипт | Rscript app.R |
Типы данных и векторы
Вектор - фундаментальная структура данных в R; даже одно значение является вектором длины 1.
| Операция | Синтаксис |
|---|---|
| Числовой вектор | v <- c(1, 2, 3) |
| Строковый вектор | s <- c("a", "b") |
| Логический вектор | b <- c(TRUE, FALSE) |
| Целочисленная последовательность | 1:10 |
| Последовательность с шагом | seq(0, 1, by = 0.1) |
| Повторить значения | rep(0, times = 5) |
| Базовые типы | numeric, character, logical, integer, complex |
| Проверить / привести тип | class(x), as.numeric("42") |
Операции над векторами
Операции векторизованы и применяются поэлементно; индексация начинается с 1.
| Операция | Синтаксис |
|---|---|
| Доступ к элементу (с 1) | v[1] |
| Срез диапазона | v[2:4] |
| Логическая фильтрация | v[v > 2] |
| Удалить элемент | v[-1] |
| Поэлементная арифметика | v * 2, v1 + v2 |
| Длина | length(v) |
| Частые свёртки | sum(v), mean(v), max(v) |
| Сортировка / разворот | sort(v), rev(v) |
| Именованный вектор | c(a = 1, b = 2) |
Датафреймы
Датафрейм - это таблица из столбцов, каждый из которых - вектор одинаковой длины.
| Операция | Синтаксис |
|---|---|
| Создать датафрейм | df <- data.frame(name = c("Ada"), age = c(30)) |
| Первые / последние строки | head(df), tail(df) |
| Размерности | nrow(df), ncol(df), dim(df) |
| Имена столбцов | names(df), colnames(df) |
| Выбрать столбец | df$age или df[["age"]] |
| Выбрать строки / столбцы | df[1, ], df[, "age"] |
| Отфильтровать строки | df[df$age > 18, ] |
| Добавить столбец | df$adult <- df$age >= 18 |
| Сводная статистика | summary(df) |
| Обзор структуры | str(df) |
Факторы и списки
Факторы хранят категориальные данные; списки содержат элементы разных типов.
| Операция | Синтаксис |
|---|---|
| Создать фактор | f <- factor(c("low", "high")) |
| Уровни фактора | levels(f) |
| Упорядоченный фактор | factor(x, ordered = TRUE) |
| Подсчёт по уровням | table(f) |
| Создать список | l <- list(name = "Ada", scores = c(1, 2)) |
| Доступ по имени | l$name или l[["name"]] |
| Доступ по позиции | l[[1]] |
| Подсписок (остаётся списком) | l[1] |
| Длина / имена | length(l), names(l) |
Управление потоком
Условия пишутся в круглых скобках, а блоки - в фигурных.
| Операция | Синтаксис |
|---|---|
| If / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| Векторизованный if-else | ifelse(v > 0, "pos", "neg") |
| Цикл for | for (i in 1:10) { ... } |
| For по вектору | for (x in v) { ... } |
| Цикл while | while (x < 100) { ... } |
| Repeat с break | repeat { if (done) break } |
| Switch | switch(key, a = 1, b = 2) |
| Логические операторы | &&, ||, ! (скалярные); &, | (векторные) |
Функции
Функции - значения первого класса; возвращается последнее вычисленное выражение.
| Операция | Синтаксис |
|---|---|
| Определить функцию | add <- function(a, b) { a + b } |
| Явный return | return(a + b) |
| Аргумент по умолчанию | greet <- function(name = "World") { ... } |
| Вариативный аргумент | f <- function(...) { sum(...) } |
| Вызов по имени | box(w = 2, h = 3) |
| Анонимная функция | function(x) x * 2 |
| Анонимная (сокращённо) | \(x) x * 2 |
| Передать в функцию высшего порядка | sapply(1:3, function(x) x^2) |
Семейство apply
Применяйте функцию к данным без написания явных циклов.
| Функция | Что делает |
|---|---|
apply(m, 1, sum) | Применить по строкам (1) или столбцам (2) матрицы |
sapply(v, f) | Применить к вектору, упростив до вектора/матрицы |
lapply(v, f) | Применить к вектору, всегда возвращая список |
vapply(v, f, numeric(1)) | Как sapply, но с проверкой типа возврата |
mapply(f, a, b) | Применить к нескольким векторам параллельно |
tapply(x, group, mean) | Применить функцию по группам |
Map(f, a, b) | Многомерный apply, возвращающий список |
Reduce(+, v) | Свернуть вектор бинарной функцией |
Частые функции обработки данных и статистики
Часто используемые базовые функции для сводки и преобразования данных.
| Функция | Что делает |
|---|---|
mean(v) / median(v) | Среднее / срединное значение |
sd(v) / var(v) | Стандартное отклонение / дисперсия |
min(v) / max(v) / range(v) | Наименьшее / наибольшее / оба |
quantile(v) | Квантили (например квартили) |
table(x) | Частотный подсчёт значений |
unique(v) / duplicated(v) | Уникальные значения / признаки дубликатов |
is.na(v) / na.omit(df) | Найти / удалить пропущенные значения |
aggregate(y ~ g, df, mean) | Свести y по группе g |
order(v) | Порядок индексов для сортировки |
cor(x, y) | Корреляция между двумя векторами |
Синтаксис R, который нужен чаще всего, на одной странице. Эта шпаргалка по R - быстрый справочник по ядру языка: присваивание и типы данных, векторы и операции над ними, датафреймы, факторы и списки, управление потоком, функции и семейство apply, используемые в анализе данных на rstats.
Всё здесь - базовый R, работающий на стандартной установке без дополнительных пакетов. Копируйте нужное или попробуйте каждый фрагмент вживую в playground для R - без настройки.
Часто задаваемые вопросы по шпаргалке R
Эта шпаргалка по R бесплатна?
Векторы в R действительно индексируются с 1?
v[1] возвращает первый элемент, а v[length(v)] - последний. Отрицательные индексы имеют особый смысл: v[-1] удаляет первый элемент, а не отсчитывает с конца. Это соглашение об индексации с 1 проходит через векторы, списки и датафреймы одинаково.Что такое датафрейм в R?
df[rows, columns], выбираете столбец через df$name и осматриваете через str(df) или summary(df).