Функции R
В R очень много разных функций, встроенных в язык и ещё больше доступно в многочисленных пакетах.
Часть их представлена здесь и снабжена ссылками на онлайн руководства.
Итеративные управляющие структуры (циклы типа for, while, repeat и т. д.) —
допускают повторение инструкций несколько раз. Однако при крупномасштабной обработке данных,
использование этих циклов может занять больше времени и места. Язык R имеет более эффективный и
быстрый подход к выполнению итераций с помощью функций.
Ниже представлен обзор некоторых функций R.
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 — остановка цикла