В R очень много разных полезных функций. И многие большие вещи можно сделать весьма быстро, написав очень мало кода. На официальном сайте есть замечательная шпаргалка на английском языке: R reference card. В сети есть несколько вольных урезанных переводов, но они не очень удобные. Ниже вашему вниманию представляется русифицированная модифицированная версия обзора основных функций R. Команды снабжены ссылками на online-мануал.
Оглавление
- Помощь
- Текущее окружение
- Общая работа с объектами
- Ввод и вывод
- Создание объектов
- Индексирование
- Работа с переменными
- Манипуляция данными
- Математика
- Матрицы
- Обработка данных
- Строки
- Дата и время
- Рисование графиков
- Рисование графиков на низком уровне
- Lattice-графика
- Оптимизация и подбор параметров
- Статистика
- Распределения
- Программирование
Помощь
- help(topic),
?topic
— справка проtopic
- help.search(“pattern”),
??pattern
— глобальный поискpattern
- help(package = ) — справка о заданном пакете
- help.start() — запустить помощь в браузере
- apropos(what) — имена объектов, которые соответствуют
what
- args(name) — аргументы команды
name
- example(topic) — примеры использования
topic
Текущее окружение
- ls() — список всех объектов
- rm(x) — удалить объект
- dir() — показать все файлы в текущей директории
- getwd() — получить текущую директорию
- setwd(dir) — поменять текущую директорию на
dir
Общая работа с объектами
- str(object) — внутренняя структура объекта
object
- summary(object) — общая информация об объекте
object
- dput(x) — получить представление объекта в R-синтаксисе
- head(x) — посмотреть начальные строки объекта
- tail(x) — посмотреть последние строки объекта
Ввод и вывод
- library(package) — подключить пакет
package
- save(file, …) — сохраняет указанные объекты в двочином XDR-формате, который не зависит от платформы
- load() — загружает данные, сохранённые ранее с помощью команды
save()
- read.table — считывает таблицу данных и создаёт по ним
data.frame
- write.table — печатает объект, конвертируя его в
data.frame
- read.csv — считывает
csv
-файл - read.delim — считывание данных, разделённых знаками табуляции
- save.image — сохраняет все объекты в файл
- cat(…, file= , sep= ) — сохраняет аргументы, конкатенируя их через
sep
- sink(file) — выводит результаты выполнения других команд в файл в режиме реального времени до момента вызова этой же команды без аргументов
Создание объектов
from:to
— генерирует последовательность чисел отfrom
доto
с шагом1
, например1:3
- с(…) — объединяет аргументы в вектор, например
c(1, 2, 3)
- seq(from, to, by = ) — генерирует последовательность числел от
from
доto
с шагомby
- seq(from, to, len = ) — генерирует последовательность числел от
from
доto
длиныlen
- rep(x, times) — повторяет
x
ровноtimes
раз - list(…) — создаёт список объектов
- data.frame(…) — создаёт фрейм данных
- array(data, dims) — создаёт из
data
многомерные массив размерностейdim
- matrix(data, nrow = , ncol = , byrow = ) — создаёт из
data
матрицуnrow
наncol
, порядок заполнения определяетсяbyrow
- factor(x, levels = ) — создаёт из
x
фактор с уровнямиlevels
- gl(n, k, length = n*k, labels = 1:n) — создаёт фактор из
n
уровней, каждый из которых повторяетсяk
раз длиныlength
с именамиlabels
- rbind(…) — объединяет аргументы по строкам
- cbind(…) — объединяет аргументы по столбцам
Индексирование
Векторы
x[n] | n -ый элемент |
x[-n] | все элементы, кроме n -го |
x[1:n] | первые n элементов |
x[-(1:n)] | все элементы, кроме первых n |
x[c(1,4,2)] | элементы с заданными индексами |
x["name"] | элемент с заданным именем |
x[x > 3] | все элементы, большие 3 |
x[x > 3 & x < 5] | все элементы между 3 и 5 |
x[x %in% c("a","and","the")] | все элементы из заданного множества |
Списки
x[n] | список, состоящий из элемента n |
x[[n]] | n -ый элемент списка |
x[["name"]] | элемент списка с именем name |
x$name | элемент списка с именем name |
Матрицы
x[i, j] | элемент на пересечении i -ой строки и j -го столбца |
x[i,] | i -ая строка |
x[,j] | j -ый столбец |
x[,c(1,3)] | заданное подмножество столбцов |
x["name", ] | строка с именем name |
Фреймы
x[["name"]] | столбец с именем name |
x$name | столбец с именем name |
Работа с переменными
- as.array(x), as.data.frame(x), as.numeric(x), as.logical(x), as.complex(x), as.character(x) — преобразование переменной к заданному типу is.na(x), is.null(x), is.array(x), is.data.frame(x), is.numeric(x), is.complex(x), is.character(x) — проверка на то, что данный объект обладает указанным типом
- length(x) — число элементов в
x
- dim(x) — размерности объекта
x
- dimnames(x) — имена размерностей объекта
x
- names(x) — имена объекта
x
- nrow(x) — число строк
x
- ncol(x) — число столбцов
x
- class(x) — класс объекта
x
- unclass(x) — удаляет атрибут класса у объекта
x
- attr(x,which) — атрибут
which
объектаx
- attributes(obj) — список атрибутов объекта
obj
Манипуляция данными
- which.max(x) — индекс элемента с максимальным значением
- which.min(x) — индекс элемента с минимальным значением
- rev(x) — реверсирует порядок элементов
- sort(x) — сортирует элементы объекта по возрастанию
- cut(x,breaks) — делит вектор на равные интервалы
- match(x, y) — ищет элементы
x
, которые есть вy
- which(x == a) — возвращает порядковые элементы
x
, которые равныa
- na.omit(x) — исключает отсутствующие значения объекта
- na.fail(x) — бросает исключение, если объект содержит отсутствующие значения
- unique(x) — исключает из объекта повторяющиеся элементы
- table(x) — создаёт таблицу с количеством повторений каждого уникального элемента
- subset(x, …) — возвращает подмножество элемента, которое соответствует заданному условию
- sample(x, size) — возвращает случайный набор размера
size
из элементовx
- replace(x, list, values) — заменяет значения
x
c индексами изlist
значениями изvalues
- append(x, values) — добавляет элементы
values
в векторx
Математика
- sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y, x), log(x), log(x, base), log10(x), exp(x) — элементарные математические функции
- min(x), max(x) — минимальный и максимальный элементы объекта
- range(x) — вектор из минимального и максимального элемента объекта
- pmin(x, y), pmax(x, y) — возвращают вектор с минимальными (максимальными) для каждой пары
x[i]
,y[i]
- sum(x) — сумма элементов объекта
- prod(x) — произведение элементов объекта
- diff(x) — возвращает вектор из разниц между соседними элементами
- mean(x) — среднее арифметическое элементов объекта
- median(x) — медиана (средний элемент) объекта
- weighted.mean(x, w) — средневзвешенное объекта
x
(w
определяет веса) - round(x, n) — округляет
x
доn
знаков после запятой - cumsum(x), cumprod(x), cummin(x), cummax(x) — кумулятивные суммы, произведения, минимумы и максимумы вектора
x
(i-ый элемент содержит статистику по элементамx[1:i]
) - union(x, y), intersect(x, y), setdiff(x,y), setequal(x,y), is.element(el,set) — операции над множествами: объединение, пересечение, разность, сравнение, принадлежность
- Re(x), Im(x), Mod(x), Arg(x), Conj(x) — операции над комплексными числами: целая часть, мнимая часть, модуль, аргумент, сопряжённое число
- fft(x), mvfft(x) — быстрое преобразование Фурье
- choose(n, k) — количество сочетаний
- rank(x) — ранжирует элементы объекта
Матрицы
%*%
— матричное умножение- t(x) — транспонированная матрица
- diag(x) — диагональ матрицы
- solve(a, b) — решает систему уравнений
a %*% x = b
- solve(a) — обратная матрица
- colSums, rowSums, colMeans, rowMeans — суммы и средние по столбцам и по строкам
Обработка данных
- apply(X,INDEX,FUN=) — возвращает вектор, массив или список значений, полученных путем применения функции
FUN
к определенным элементам массива или матрицыx
; подлежащие обработке элементых
указываются при помощи аргументаMARGIN
; - lapply(X,FUN) — возвращает список той же длины, что и
х
; при этом значения в новом списке будут результатом применения функцииFUN
к элементам исходного объектах
- tapply(X,INDEX,FUN=) — применяет функцию
FUN
к каждой совокупности значений х, созданной в соответствии с уровнями определенного фактора; перечень факторов указывается при помощи аргументаINDEX
- by(data,INDEX,FUN) — аналог
tapply()
, применяемый к таблицам данных - merge(a,b) — объединяет две таблицы данных (
а
иb
) по общим столбцами или строкам - aggregate(x,by,FUN) — разбивает таблицу данных
х
на отдельные наборы данных, применяет к этим наборам определенную функциюFUN
и возвращает результат в удобном для чтения формате - stack(x, …) — преобразует данные, представленные в объекте
х
в виде отдельных столбцов, в таблицу данных - unstack(x, …) — выполняет операцию, обратную действию функции
stack()
- reshape(x, …) — преобразует таблицу данных из «широкого формата» (повторные измерения какой-либо величины записаны в отдельных столбцах таблицы) в таблицу “узкого формата” (повторные измерения идут одно под одним в пределах одного столбца)
Строки
- print(x) — выводит на экран
x
- sprintf(fmt, …) — форматирование текста в
C-style
(можно использовать%s, %.5f
и т.п.) - format(x) — форматирует объект
x
так, чтобы он выглядел красиво при выводе на экран - paste(…) — конвертирует векторы в текстовые переменные и объединяет их в одно текстовое выражение
- substr(x,start,stop) — получение подстроки
- strsplit(x,split) — разбивает строку
х
на подстроки в соответствии сsplit
- grep(pattern,x) (а также
grepl
,regexpr
,gregexpr
,regexec
) — поиск по регулярному выражению - gsub(pattern,replacement,x) (а также
sub
) — замена по регулярному выражению - tolower(x) — привести строку к нижнему регистру
- toupper(x) — привести строку к верхнему регистру
- match(x,table),
x %in% table
— выполняет поиск элементов в вектореtable
, которые совпадают со значениями из векторах
- pmatch(x,table) — выполняет поиск элементов в векторе
table
, которые частично совпадают с элементами вектора х - nchar(x) — возвращает количество знаков в строке
х
Дата и время
- as.Date(s) — конвертирует вектор
s
в объект классаDate
- as.POSIXct(s) — конвертирует вектор
s
в объект класса POSIXct
Рисование графиков
- plot(x) — график
x
- plot(x, y) — график зависимости
y
отx
- hist(x) — гистограмма
- barplot(x) — столбчатая диаграмма
- dotchart(x) — диаграмма Кливленда
- pie(x) — круговая диаграмма
- boxplot(x) — график типа “коробочки с усами”
- sunflowerplot(x, y) — то же, что и
plot()
, однако точки с одинаковыми координатами изображаются в виде “ромашек”, количество лепестков у которых пропорционально количеству таких точек - coplot(x˜y | z) — график зависимости y от x для каждого интервала значений
z
- interaction.plot(f1, f2, y) — если
f1
иf2
— факторы, эта фукнция создаст график со средними значениямиy
в соответствии со значениямиf1
(по осих
) иf2
(по осиу
, разные кривые) - matplot(x, y) — график зависимости столбцов y от столбцов
x
- fourfoldplot(x) — изображает (в виде частей окружности) связь между двумя бинарными переменными в разных совокупностях
- assocplot(x) — график Кохена-Френдли
- mosaicplot(x) — мозаичный график остатков лог-линейной регрессии
- pairs(x) — если х - матрица или таблица данных, эта функция изобразит диаграммы рассеяния для всех возможных пар переменных из
х
- plot.ts(x), ts.plot(x) — изображает временной ряд
- qqnorm(x) — квантили
- qqplot(x, y) — график зависимости квантилей y от квантилей
х
- contour(x, y, z) — выполняет интерполяцию данных и создает контурный график
- filled.contour(x, y, z) — то же, что
contour()
, но заполняет области между контурами определёнными цветами - image(x, y, z) — изображает исходные данные в виде квадратов, цвет которых определяется значениями
х
иу
- persp(x, y, z) — то же, что и
image()
, но в виде трехмерного графика - stars(x) — если
x
— матрица или таблица данных, изображает график в виде “звезд” так, что каждая строка представлена “звездой”, а столбцы задают длину сегментов этих “звезд” - symbols(x, y, …) — изображает различные символы в соответствии с координатами
- termplot(mod.obj) — зображает частные эффекты переменных из регрессионной модели
Рисование графиков на низком уровне
- points(x, y) — рисование точек
- lines(x, y) — рисование линии
- text(x, y, labels, …) — добавление текстовой надписи
- mtext(text, side=3, line=0, …) — добавление текстовой надписи
- segments(x0, y0, x1, y1) — рисование отрезка
- arrows(x0, y0, x1, y1, angle= 30, code=2) — рисование стрелочки
- abline(a,b) — рисование наклонной прямой
- abline(h=y) — рисование вертикальной прямой
- abline(v=x) — рисование горизонтальной прямой
- abline(lm.obj) — рисование регрессионной прямой
- rect(x1, y1, x2, y2) — рисование прямоугольника
- polygon(x, y) — рисование многоугольника
- legend(x, y, legend) — добавление легенды
- title() — добавление заголовка
- axis(side, vect) — добавление осей
- rug(x) — рисование засечек на оси
X
- locator(n, type = “n”, …) — возвращает координаты на графике, в которые кликнул пользователь
Lattice-графика
- xyplot(y˜x) — график зависимости
у
отх
- barchart(y˜x) — столбчатая диаграмма
- dotplot(y˜x) — диаграмма Кливленда
- densityplot(˜x) — график плотности распределения значений
х
- histogram(˜x) — гистограмма значений
х
- bwplot(y˜x) — график типа “коробочки с усами”
- qqmath(˜x) — аналог функции
qqnorm()
- stripplot(y˜x) — аналог функции
stripplot(x)
- qq(y˜x) — изображает квантили распределений
х
иу
для визуального сравнения этих распределений; переменнаях
должна быть числовой, переменнаяу
- числовой, текстовой, или фактором с двумя уровнями - splom(˜x) — матрица диаграмм рассеяния (аналог функции
pairs()
) - levelplot(z˜xy|g1g2) — цветной график значений
z
, координаты которых заданы переменнымих
иу
(очевидно, чтоx
,y
иz
должны иметь одинаковую длину);g1
,g2
… (если присутствуют) — факторы или числовые переменные, чьи значения автоматически разбиваются на равномерные отрезки - wireframe(z˜xy|g1g2) — функция для построения трехмерных диаграмм рассеяния и плоскостей;
z
,x
иу
- числовые векторы;g1
,g2
… (если присутствуют) - факторы или числовые переменные, чьи значения автоматически разбиваются на равномерные отрезки - cloud(z˜xy|g1g2) — трёхмерная диаграмма рассеяния
Оптимизация и подбор параметров
- optim(par, fn, method = ) — оптимизация общего назначения
- nlm(f,p) — минимизация функции
f
алгоритмом Ньютона - lm(formula) — подгонка линейной модели
- glm(formula,family=) — подгонка обобщённой линейной модели
- nls(formula) — нелинейный метод наименьших квадратов
- approx(x,y=) — линейная интерполяция
- spline(x,y=) — интерполяция кубическими сплайнами
- loess(formula) — подгонка полиномиальной поверхности
- predict(fit,…) — построение прогнозов
- coef(fit) — расчётные коэффициенты
Статистика
- sd(x) — стандартное отклонение
- var(x) — дисперсия
- cor(x) — корреляционная матрица
- var(x, y) — ковариация между
x
иy
- cor(x, y) — линейная корреляция между
x
иy
- aov(formula) — дисперсионный анализ
- anova(fit,…) — дисперсионный анализ для подогнанных моделей
fit
- density(x) — ядерные плотности вероятностей
- binom.test() — точный тест простой гипотезы о вероятности успеха в испытаниях Бернулли
- pairwise.t.test() — попарные сравнения нескольки независимых или зависимых выборок
- prop.test() — проверка гипотезы о том, что частоты какого-либо признака равны во всех анализируемых группах
- t.test() — тест Стьюдента
Распределения
- rnorm(n, mean=0, sd=1) — нормальное распределение
- rexp(n, rate=1) — экспоненциальное распределение
- rgamma(n, shape, scale=1) — гамма-распределение
- rpois(n, lambda) — распределение Пуассона
- rweibull(n, shape, scale=1) — распределение Вейбулла
- rcauchy(n, location=0, scale=1) — распределение Коши
- rbeta(n, shape1, shape2) — бета-распределение
- rt(n, df) — распределение Стьюдента
- rf(n, df1, df2) — распределение Фишера
- rchisq(n, df) — распределение Пирсона
- rbinom(n, size, prob) — биномиальное распределение
- rgeom(n, prob) — геометрическое распределение
- rhyper(nn, m, n, k) — гипергеометрическое распределение
- rlogis(n, location=0, scale=1) — логистическое распределение
- rlnorm(n, meanlog=0, sdlog=1) — логнормальное распределение
- rnbinom(n, size, prob) — отрицательное биномиальное распределение
- runif(n, min=0, max=1) — равномерное распределение
Программирование
Работа с функциями:
function(arglist) { expr } # создание пользовательской функции
return(value) # возвращение значения
do.call(funname, args) # вызывает функцию по имени
Условные операторы:
if(cond) expr
if(cond) cons.expr else alt.expr
ifelse(test, yes, no)
Циклы:
for(var in seq) expr
while(cond) expr
repeat expr
break # остановка цикла