Menu
Coddy logo textTech

Шпаргалка по 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 / elseif (x > 0) { ... } else if (x < 0) { ... } else { ... }
Векторизованный if-elseifelse(v > 0, "pos", "neg")
Цикл forfor (i in 1:10) { ... }
For по векторуfor (x in v) { ... }
Цикл whilewhile (x < 100) { ... }
Repeat с breakrepeat { if (done) break }
Switchswitch(key, a = 1, b = 2)
Логические операторы&&, ||, ! (скалярные); &, | (векторные)

Функции

Функции - значения первого класса; возвращается последнее вычисленное выражение.

ОперацияСинтаксис
Определить функциюadd <- function(a, b) { a + b }
Явный returnreturn(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 полностью бесплатна, регистрация не требуется. Добавьте её в закладки и возвращайтесь, когда нужно посмотреть операцию над вектором, метод датафрейма или статистическую функцию.
Векторы в R действительно индексируются с 1?
Да. В отличие от большинства языков программирования, индексация в R начинается с 1, поэтому v[1] возвращает первый элемент, а v[length(v)] - последний. Отрицательные индексы имеют особый смысл: v[-1] удаляет первый элемент, а не отсчитывает с конца. Это соглашение об индексации с 1 проходит через векторы, списки и датафреймы одинаково.
Что такое датафрейм в R?
Датафрейм - это табличный тип R: набор столбцов, где каждый столбец - вектор одинаковой длины, а разные столбцы могут хранить разные типы (числа, текст, факторы). Это стандартная структура для наборов данных - строки являются наблюдениями, а столбцы - переменными - и вы индексируете его как df[rows, columns], выбираете столбец через df$name и осматриваете через str(df) или summary(df).
Можно ли практиковать R онлайн?
Да. Откройте playground для R, чтобы выполнить любой фрагмент из этой шпаргалки прямо в браузере - без установки R или RStudio. А если нужна структура, бесплатный интерактивный курс R от Coddy шаг за шагом проведёт вас от векторов и датафреймов до семейства apply и статистики.
Подходит ли эта шпаргалка для начинающих?
Да. Она построена от самых распространённых тем (присваивание, векторы, датафреймы) к продвинутым (семейство apply и статистические функции), так что верхние разделы можно использовать с первого дня и постепенно осваивать остальное.
Coddy programming languages illustration

Изучайте R с Coddy

НАЧАТЬ