Функции в R

DateTags

В R очень много разных полезных функций. И многие большие вещи можно сделать весьма быстро, написав очень мало кода. На официальном сайте есть замечательная шпаргалка на английском языке: R reference card. В сети есть несколько вольных урезанных переводов, но они не очень удобные. Ниже вашему вниманию представляется русифицированная модифицированная версия обзора основных функций R. Команды снабжены ссылками на online-мануал.

Оглавление

Помощь

Текущее окружение

  • 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

Работа с переменными

Манипуляция данными

  • 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) — зображает частные эффекты переменных из регрессионной модели

Рисование графиков на низком уровне

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() — тест Стьюдента

Распределения

Программирование

Работа с функциями:

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 # остановка цикла