Полезные функции

Ниже представлен список функций, которые стоит запомнить или, по меньшей мере, иметь всегда под рукой для уверенного пользования языком R. Этот список составлен на основе "шпаргалки" R-команд, опубликованной Томом Шортом (Tom Short) на сайте CRAN, и несколько видоизменен.




Получение информации о функциях и объектах R

Справочная информация по большинству функций R доступна онлайн (например, на сайте Факультета статистики Калифорнийского университета в Беркли). Непосредственно из командной строки информацию о функциях и объектах R можно получить при помощи следующих команд:

help(тема)
# документация по "теме"; например команда help(plot) выдаст страницу
# со справочной инфомацией по функции plot()
 
?тема
# это эквивалент команды help(тема)
 
help.search("тема")
# поск информаци по "теме" во всей встроенной справочной системе R;
# обратите внимание на необходимость кавычек
 
apropos("выражение")
# выполняет поиск всех функций, в имени которых содержится "выражение";
# обратите внимание на необходимость кавычек
 
help.start()
# локально запускает html-версию встроенной справочной системы R
 
str(a)
# отображает внутреннюю структуру объекта a (от "structure" - структура)
 
summary(a)
# выводит обобщенную информацию об объекте а; 
# как правило, это набор статистических параметров, описывающих а,
# однако summary() является функцией общего назначения
# и конкретный результат ее выполнения будет зависеть от класса объекта a
 
ls()
# выводит список всех объектов, находящихся в рабочей среде программы; 
# для поиска объектов, в именах которых имеется повторяющийся элемент,
# используйте дополнительный аргумент pat = "паттерн",
# например, ls(pat = "mean")
 
dir()
# отображает содержимое рабочей директории программы
 
methods(a)
# выводит список методов, применимых к объекту S3-класса a
 
methods(class = class(a))
# выводит список методов, применимых к объекту класса a


Ввод и сохранение данных
data(x)
# загружает таблицу данных x, 
# сохраненую ранее при помощи команды save()
 
library(x)
# загружает дополнительный пакет x ("библиотеку"), содержащий набор функций
# для выполнения анализа определенного вида; помимом функций, расширяющих
# базовые возможности R, пакеты могут содержать также таблицы с данными
 
read.table(file)
# считывает файл с данными и создает из него таблицу данных (dataframe);
# по умолчанию предполагается, что значения переменных в считываемом файле
# разделены пробелом (аргумент sep = ""; от слова separator - разделитель),
# но, например, в csv-файлах разделителем служит запятая (sep = ",");
# для превращения первой строки считываемог файла в заголовки столбцов,
# необходимо включить аргумент header (header = TRUE);
# аргумент skip = n можно использовать для того, чтобы пропустить
# первые n строк файла при считывании;
# о других подробностях работы с этой функцией можно узнать,
# выполнив команду help(read.table)
 
read.csv("filename", header = TRUE) 
# то же, что и read.table(),
# но с готовыми настройками для считывания csv-файлов
 
read.delim("filename", header = TRUE)
# то же, что и read.table(),
# но с готовыми настройками для считывания файлов, в которых
# значения переменных разделены знаком табуляции (tab-delimited files)
 
save(file, ...)
# сохраняет указанные объекты (...) в двоичном файле
# XDR-формата, с которым можно работать в любой операционной системе
 
save.image(file)
# сохраняет все объекты, созданные в ходе работы,
# в виде специфичного для R rda-файла
 
cat(..., file = "", sep = " ")
# превращает все указанные аргументы (...)
# в текст и сохраняет результат в виде файла; разделитель между
# получаемыми текстовыми значениями задается при помощи аргумента sep
 
print(a, ...)
# выводит на экран объект а; это функция общего назначения -
# конкретный результат ее работы будет зависеть от класса объекта а
 
format(x,...)
# позволяет отформатировать объект x так, что
# он будет выглядеть "аккуратно" при выводе на экран
 
write.table(x, file = "", row.names = TRUE, col.names = TRUE, sep =" ")
# сохраняет объект x в файл, предварительно преобразовав этот объект
# в таблицу данных (dataframe); если включен аргумент quote (quote = TRUE),
# текстовые значения и значения уровней факторов будут заключены в
# двойные кавычки ("); аргумент sep позволяет задать разделитель между
# значениями переменных в таблице; используйте col.names = NA для создания
# таблицы, с которой в дальнейшем предполагается работать в программах
# вроде Excel - так заголовки столбцов таблицы не окажутся смещенными
 
sink(file)
# выводит результы выполнения других команд в файл в режиме
# реального времени; для прекращения действия этой команды выполните
# команду sink() (именно так - ничего не указывая в скобах)
 
# Работая под операционной системой Windows, можно скопировать таблицу
# с данными из Excel в буфер памяти и сохранить ее в виде
# R-объекта следующим образом:
 
read.delim("clipboard")
# Чтобы скопировать таблицу данных, хранящуюся в R-объекте x, в буфер памяти
# для последующей вставки в Excel, можно выполнить следующую команду:
 
write.table(x, "clipboard", sep ="\t", col.names = NA)
 
# Для операций с данными, хранящимися в базах данных, существуют специальные
# R-библиотеки: RODBC, DBI, RMySQL, RPgSQL, ROracle. Библиотеки XML, hdf5,
# netCDF могут пригодиться для работы с файлами других форматов


Создание векторов и таблиц с данными
c(...)
# функция общего назначения (от concatenation - объединение, слияние);
# объединяет аргументы в один вектор определенного типа;
# например, команда:
 
a = с(1, 2, 3)
# приведет к созданию числового вектора, содержащего значения от 1 до 3;
# эквивалентом этой команды является
a = c(1:3)
 
seq(from = , to = , by)
# формирует последовательность числовых или других значений
# с заданным шагом; например, команда
 
а = seq(from = 1, to = 3, by = 0.5)  # или просто a = seq(1, 3, 0.5)
# приведет к созданию числового вектора а, содержащего значения
# 1.0, 1.5, 2.0, 2.5, 3.0
 
rep(x, times = )
# повторяет x то количество раз, которое задано аргументом times;
# например, команда
а = rep(5, 3)
# приведет к созданию вектора а, содержащего значения 5, 5, 5;
# используя аргумент each, можно повторить каждый элемент объекта x
# необходимое количество раз; так, результатом выполнения команды
rep(c(1,2,3), each = 2)
# будет 1 1 2 2 3 3
 
data.frame(...)
# создает таблицу данных из поименованных или непоименованных аргументов;
# например, выполнение команды
a = data.frame(Number = 1:4, Letter = c("a","B","c","d"))
# приведет к созданию таблицы с двумя столбцами -
# Number (содержит числа от 1 до 4) и Letter (содержит буквы a, B, c, d)
 
list(...)
# создает список объектов; в отличие от столбцов таблицы данных,
# список может содержать объекты разной длины, например:
list(a = c(1,2), b = "hi", c = TRUE)
 
array(x, dim = )
# создет массив данных из объекта x; аргумент dim используется для указания
# размерности массива (например, dim = c(3,4,2));
# если объект x не обдадает достаточной длиной, его элементы
# при создании массива будут использованы повторно
 
matrix(x, nrow = , ncol = )
# создает матрицу из вектора x; количество строк задается аргументом nrow,
# количество столбцов - аргументом ncol;
# если объект x не обдадает достаточной длиной, 
# его элементы при создании матрицы будут использованы повторно ("recycling") 
 
factor(x, levels = )
# превращает вектор x в фактор; число уровней фактора задается при помощи
# аргумента levels
 
gl(n, k, length = n*k, labels = 1:n)
# еще одна команда для создания факторов; n - количество уровней фактора;
# k - число повторов для каждого уровня; length - размер итогового объекта;
# labels - необязательный аргумент, который можно использовать для указания
# названий каждого уровня фактора; например, выполнение команды
а = gl(2, 8, labels = c("Control", "Treatment"))
# приведет к созданию вектора а, являющегося фактором с двумя уровнями - 
# Control и Treatment; каждая из меток "Control" и "Treatment"
# будет повторена 8 раз
 
rbind(...)
# эта функция построчно объединяет свои аргументы,
# создавая матрицу или таблицу данных
 
cbind(...)
# функция, аналогичная предыдущей; отличие состоит лишь в том, что cbind()
# объединяет свои аргументы в одну матрицу или таблицу данных по столбцам,
# а не по строкам


Индексирование векторов

x[n]
# возварщает n-й элемент вектора x
 
x[-n]
# возвращает все элементы вектора x, за исключением n-го
 
x[1:n]
# возвращает первые n элементов вектора x
 
x[-(1:n)]
# возвращает элементы вектора x с n+1 до последнего
 
x[c(1,4,2)]
# возвращает определенные элементы вектора x (здесь 1-й, 4-й и 2-й)
 
x["name"]
# возвращает элемент вектора x с именем "name"
 
x[x > 3]
# возвращает все элементы вектора x со значением >3
 
x[x > 3 & x < 5]
# возвращает все элементы вектора x со значением >3 и <5
 
x[x %in% c("a","and","the")] 
# возвращает только те элементы вектора x, которые указаны после 
# оператора %in% (здесь из вектора x были бы извлечены текстовые значения
# "a", "and", и "the")

Индексирование списков, матриц и таблиц данных

x[[n]]
# возвращает n-й элемент списка x
 
x[["name"]]
# возвращает элемент списка или таблицы x с именем "name"
 
x$name
# команда, идентичная предыдушей

Конвертация R-объектов

# Следующие команды конвертируют объект x в объект соответствующего класса:
as.array(x) # массив данных
 
as.data.frame(x) # таблица данных
 
as.numeric(x) # числовой вектор
 
as.logical(x) # логический вектор
 
as.character(x) # текстовый вектор

Получение информации о переменной
 
# Следующие команды позволяют проверить, принадлежит ли объект x или его
# отдельные элементы к определенному типу:
 
is.na(x) # отсутствующее значение
 
is.null(x) # ноль
 
is.array(x) # массив данных
 
is.data.frame(x) # таблица данных
 
is.numeric(x) # числовой вектор
 
is.character(x) # текстовый вектор
 
# испоользуйте команду method(is) для просмотра полного списка
# аналогичных функций
 
length(x)
# возвращает число элементов, содержащихся в объекте x
 
dim(x)
# возвращает размерность объекта х; используя команду вроде
dim(x) = c(3,2)
# можно принудительно задать определенную размерность объекта x
 
dimnames(x)
# возвращает или присваивает имена размерностей объекта x
 
nrow(x)
# возвращает число строк в таблице или матрице x
 
ncol(x)
# то же для столбцов
 
class(x)
# возвращает или задает (например, class(x) = "myclass") класс объекта x
 
unclass(x)
# удаляет атрибут класса у объекта x
 
attr(x, which)
# возвращает или задает атрибут "which" объекта x
 
attributes(obj)
# возвращает или задает список атрибутов объекта obj

Извлечение данных и манипуляции с ними

which.max(x)
# возвращает порядковый номер элемента объекта x с максимальным значением
 
which.min(x)
# возвращает порядковый номер элемента объекта x с минимальным значением
 
rev(x)
# меняет порядок элементов объекта x на обратный
 
sort(x)
# сортирует элементы объекта x по возрастанию;
# для сортировки по убыванию используйте
rev(sort(x))
 
cut(x, breaks)
# делит вектор x на равные интервалы (факторы); в качестве аргумента breaks
# может выступать либо необходимое число интервалов, либо вектор,
# содержащий перечень "точек разрыва"
 
match(x, y)
# ищет, какие значения объекта y совпадают со значениями обекта x
# и возвращает порядковые номера первых из совпадающих значений;
# например, если
y = c("a", "b", "c", "d", "e", "f")
x = c("d", "f") # то результатом команды match(x, y) будет вектор
[1] 4 6
 
which(x == a)
# проверяет, какие элементы объекта х равны a, и возвращает вектор,
# содержащий порядковые номера этих элементов
 
na.omit(x)
# исключает отсутствующие значения из объекта x;
# если x является матрицей или таблицей данных, то исключается
# каждая строка, содержащая хотя бы одно отсутствующее значение
 
na.fail(x)
# возвращает сообщение об ошибке если объект x содержит хотя бы
# одно осутствующее значение

unique(x)
# если х - вектор или таблица данных, эта команда создаст
# соответствующий объект, в котором не будет повторяющихся значений
 
table(x)
# возвращает таблицу с частотами встречаемости каждого
# значения х
 
subset(x, ...)
# отфильтровывает и возвращает ту часть объекта х, которая
# соответствует определенному условию; например, команда
a = subset(x < 5)
# создаст вектор а, который будет содержать только те значения х,
# которые не превышают 5; если x - таблица данных, то
# можно использовать аргумент select для указания столбцов,
# которые необходимо извлечь из этой таблицы
 
sample(x, size)
# производит (квази)случайный отбор элементов из объекта х
# в количестве size; аргумент replace = TRUE позволяет
# осуществлять случайный отбор элементов с их возвратом
# в исходную совокупность х
 
prop.table(x, margin=)
# рассчитывает маргинальные частоты таблиц; чтобы понять, как
# работает данная функция, выполните следующие команды:
m = matrix(1:4, 2)
m
prop.table(m, margin = 1)

apply(x, MARGIN, FUN = ...)
# возвращает вектор, массив или список значений, полученных путем
# применения функции FUN к определенным элементам массива или матрицы x;
# подлежащие обработке элементы х указываются при помощи аргумента
# MARGIN; например, если х - матрица, то при MARGIN = 1 функция FUN
# будет применена к каждой строке матрицы, при MARGIN = 2 -
# к каждому столбцу матрицы
 
lapply(х, FUN = ...)
# возвращает список той же длины, что и х; при этом значения в
# новом списке будут результатом применения функции FUN к элементам
# исходного объекта х
 
tapply(х, INDEX, FUN = ...)
# применяет функцию FUN к каждой совокупности значений х,
# созданной в соответствии с уровнями определенного фактора;
# перечень факторов указывается при помощи аргумента INDEX
 
by(data, INDICES, FUN = ...)
# аналог tapply(), применяемый к таблицам данных
 
merge(a, b)
# объединяет две таблицы данных (а и b) по общим столбцами или строкам
 
aggregate(x, by = ..., FUN = ...)
# разбивает таблицу данных х на отдельные наборы данных, применяет
# к этим наборам определенную функцию FUN и возвращает результат
# в удобном для чтения формате; аргумент by задает список группирующих
# элементов (например, уровней факторов)
 
stack(x)
# преобразует данные, представленные в объекте х в виде отдельных
# столбцов, в таблицу данных (если х - список, то результатом
# будет один единственный столбец со всеми элементами х)
 
unstack(x)
# выполняет операцию, обратную действию функции stack()
 
reshape(x)
# преобразует таблицу данных из "широкого формата" (повторные измерения
# какой-либо величины записаны в отдельных столбцах таблицы) в таблицу
# "узкого формата" (повторные измерения идут одно под одним в пределах
# одного столбца)

paste(..., sep = ...)
# конвертирует векторы в текстовые переменные и объединяет их
# в одно текстовое выражение; аргумент sep позволяет задать
# текстовое выражение, которое будет разделять значения объединяемых
# векторов (по умолчанию это пробел)
 
substr(x, start, stop)
# извлекает определенную часть из текстового вектора х; аргументы
# start и stop служат для указания позиции первого и последнего
# элементов извлекаемой части вектора х

strsplit(x, split)
# разбивает текстовый вектор х в соответствии с паттерном,
# заданным при помощи аргумента split
 
grep(pattern, x)
# производит поиск частей текстового вектора х, которые
# совпадают с паттерном, указанным при помощи аргумента pattern;
# для обзора других функций, предназначенных для работы с регулярными
# выражениями, см. ?regex
 
gsub(pattern, replacement, x)
# заменяет все части текстового вектора х, соответствующие паттерну
# pattern, на выражение, заданное при помощи аргумента replacement
 
tolower(x)
# преобразует все буквы текстового вектора х в "маленькие"
 
toupper(x)
# преобразует все буквы текстового вектора х в "большие"
 
match(x, table)
# выполняет поиск элементов в векторе table, которые совпадают
# со значениями из вектора х, и возвращает порядковые номера первых
# таких совпадений
 
x %in% table
# команда, аналогичная предыдущей
 
pmatch(x, table)
# выполняет поиск элементов в векторе table, которые частично совпадают
# с элементами вектора х, и возвращает порядковые номера первых
# таких совпадений

nchar(x) # возвращает количество знаков в текстовом векторе х

Математические функции

# Ниже приведен ряд математических функций, действие которых
# должно быть понятно из их названий:
sin(х); cos(x); tan(x); asin(x); acos(x); atan(x);
atan2(x); log(x); log10(x); exp(x)
 
max(x) 
# максимальное значение в числовом векторе x

min(x)
# минимальное значение в числовом векторе x
 
range(x)
# возвращает минимальное и максимальное значения из числового
# вектора х, т.е. выполняет команду c(min(x), max(x))
 
sum(x)
# сумма всех элементов x
 
prod(x)
# произведение всех элементов x
 
mean(x)
# арифметическая средняя совокупности х
 
median(x)
# медиана совокупности х
 
quantile(x, probs = ...)
# рассчитывает выборочные квантили, соответствующие определенным
# вероятностям (по умолчанию это 0, 0.25, 0.5, 0.75, 1); при помощи
# аргумента probs можно задать вектор с любыми интересующими
# пользователя вероятностями
 
weighted.mean(x, w)
# средневзвешенная средняя по вектору х; аргумент w служит для
# указания весов
 
rank(x)
# ранжирует элементы х
 
var(x)
# дисперсия совокупности х (рассчитывается для n - 1)
 
cov(x)
# то же, что и var(); если х - матрица или таблица данных,
# рассчитывается ковариационная матрица
 
sd(x)
# стандартное отклонение совокупности x
 
cor(x)
# возвращает корреляционную матрицу если х явялется матрицей или
# таблицей данных (результатом будет 1 если x является вектором)
 
var(x, y); cov(x, y)
# возвращает ковариации между x и y, или между всеми столбцами х и y
# (в случае, если x и y являются матрицами или таблицами данных)
 
cor(x, y)
# возвращает параметрический коэффициент корреляции Пирсона
# (или корреляционную матрицу, если х и у являются матрицами
# или таблицами данных)
 
round(x, n)
# округляет х до n знаков после запятой
 
log(x, base)
# рассчитывает логарифм х по основанию base
 
scale(x)
# если х является матрицей, нормализует значения каждого столбца
# (т.е. вычитает от каждого значения среднюю по столбцу и делит результат
# на стандартное отклонение по этому столбцу)
 
pmin(x, y)
# возвращает вектор с минимальными значениями из каждой пары x[i], y[i]
 
pmax(x, y)
# команда, идентичная предыдущей, но для максимальных значений 
 
cumsum(x)
# возвращает вектор с кумулятивными суммами по вектору х
 
cumprod(x)
# возвращает вектор с кумулятивными произведениями по вектору х
 
cummin(x)
# возвращает вектор с кумулятивными минимумами по вектору х
 
cummax(x)
# возвращает вектор с кумулятивными максимумами по вектору х
 
union(x, y)
# объединяет элементы векторов х и у; результирующий вектор
# содержит только неповторяющиеся значения из обоих исходных рядов 
 
intersect(x, y)
# возвращает вектор только с теми значениями, которые встречаются
# и в векторе х, и в векторе у
 
setdiff(x, y)
# возвращает вектор только с теми значениями вектора х, которые
# не встречаются в векторе у
 
setequal(x, y)
# проверяет, содержат ли векторы х и у идентичные элементы (не обязательно
# в одинаковых позициях), и возвращает соотетствующее логическое значение
 
Mod(x); abs(x)
# возвращают модуль х

Многие математические функции принимают аргумент na.rm = TRUE, который позволяет игнорировать отсутствующие значения при выполнении вычислений.

Матрицы

t(x)
# выполняет траспонирование матрицы х
 
diag(x)
# возвращает дагональ матрицы х
 
%*%
# оператор умножения матриц
 
solve(a, b)
# находит х в уравнении a %*% x = b, где a и b - матрицы
 
solve(a)
# выполняет инверсию матрицы а

rowsum(x)
# рассчитывает суммы по каждой строке матрицы х или другого
# схожего по структуре объекта; более быстрой версией этой
# функции являетя rowSums(x)
 
colsum(x), colSums(x)
# функции, аналогичные предыдущей, но работают со столбцами матриц
 
rowMeans(x)
# рассчитытвает средние значения по каждой строке матрицы х
 
colMeans(x)
# функция, аналогичная предыдущей, но работает со столбцами матриц

Даты и время

as.Date(s), as.POSIXct(s)
# конвертируют вектор s в объект класса Date или POSIXct соответственно;
# объекты этих двух классов хранят даты (Date - только даты, без времени;
# POSIXct - и даты, и время, включая временные зоны); подробнее см. 
# ?DateTimeClasses
 
format(dt)
# конвертирует дату dt в текст; по умолчанию такой текст будет представлен
# в виде “2001-02-21”; возможны и другие форматы
 
# Ниже перечислены основные форматы дат и времени, принятые в системе R
 
%a, %A 
# сокращенное и полное названия дней недели (на англ. языке)
 
%b, %B 
# сокращенное и полное названия месяцев (на англ. языке)
 
%d 
# день месяца (01–31)
 
%H
# часы (00–23)
 
%I 
# часы (01–12)
 
%j 
# день года (001–366)
 
%m 
# месяц (01–12)
 
%M 
# минута (00–59)
 
%p
# AM/PM-представление времени суток
 
%S
# секунда (00–61)
 
%U 
# неделя (00–53); первое воскресенье года считается 1-м днем 1-ой недели
 
%w
# день недели (0–6, воскресенье имее позицию 0)
 
%W 
# неделя (00–53); первые понедельник года считается 1-м днем 1-ой недели
 
%y 
# год, без указания века (00–99); лучше не использовать
 
%Y 
# год, с указанием века

Построение графиков

plot(x)
# график значений вектора х, упорядоченных вдоль оси х
 
plot(x, y)
# график зависимости y от х
 
hist(x, breaks = ...)
# гистограмма частот значений переменной х; аргумент breaks = 
# можно использовать, чтобы изменить принятое по умолчанию
# количество столбцов
 
barplot(x)
# столбчатая диаграмма значений вектора x; аргумент horiz=TRUE
# позволяет изобразить столбики горизонтально
 
dotchart(x)
# если х - таблица данных, то выполнение этой команды приведет
# к созданию т.н. диаграммы Кливленда
 
pie(x)
# круговая диаграмма
 
boxplot(x)
# график типа "коробочки с усами"
 
sunflowerplot(x, y)
# то же, что и plot(), однако точки с одинаковыми координатами изображаются
# в виде "ромашек", количество лепестков у которых пропорционально количеству
# таких точек
 
stripplot(x)
# изображает значения х вдоль единственной горизонтальной оси
 
coplot(x˜y | z)
# график зависимости y от x для каждого интервала значений z (или для
# каждого уровня фактора, если z - фактор)
 
interaction.plot (f1, f2, y)
# если f1 и f2 - факторы, эта фукнция создаст график со средними значениями y
# в соответствии со значениями f1 (по оси х) и f2 (по оси у, разные кривые);
# аргумент fun = ... позволяет выбрать и другие параметры 
# описательной статистики, помимо средней
 
matplot(x, y)
# график зависимости первого столбца значений у от первого стобца значений х,
# второго столбца y от второго столбца х, и т.д.
 
fourfoldplot(x)
# изображает (в виде частей окружности) связь между двумя бинарными
# переменными в разных совокупностях (объект x должен быть массивом с
# размерностью dim=c(2, 2, k) или матрицей размером dim=c(2, 2) при k = 1)
 
assocplot(x)
# график Кохена-Френдли, который изображает то, насколько независимы значения
# в столбцах и строках таблицы сопряженности размером 2х2
 
mosaicplot(x)
# мозаичный график остатков лог-линейной регрессии
 
pairs(x)
# если х - матрица или таблица данных, эта функция изобразит диаграммы
# рассеяния для всех возможных пар переменных из х
 
plot.ts(x)
# изображает временной ряд; объект х должен принадлежать к классу ts
# (time series)
 
qqnorm(x)
# изображает квантили значений х против квантилей, которые можно было бы
# ожидать при условии, что х является нормально распределенной переменной;
# эта функция очень удобна для проверки соответствия данных закону
# нормального распределения (при нормальном распределении точки
# на таком графике должны примерно укладываться вдоль прямой линии,
# проходящей из точки начала координат под углом 45 градусов)
 
qqplot(x, y)
# график зависимости квантилей y от квантилей х
 
contour(x, y, z)
# выполняет интерполяцию данных и создает контурный график; х и у должны быть
# векторами, а z  - матрицей, причем такой, что 
# dim(z) = c(length(x), length(y))
 
filled.contour(x, y, z)
# то же, что contour(), но заполняет области между контурами определенными
# цветами; легенда с расшифровкой цветов изображается автоматически

image(x, y, z)
# изображает исходные данные в виде квадратов, цвет которых определяется
# значениями х и у
 
persp(x, y, z)
# то же, что и image(), но в виде трехмерного графика
 
stars(x)
# если x - матрица или таблица данных, изображает график в виде "звезд" так,
# что каждая строка представлена "звездой", а столбцы задают длину
# сегментов этих "звезд"
 
symbols(x, y, ...)
# изображает различные символы в соответствии с координатами, заданными х и у
# (квадраты, круги, треугольники, и т.п.); размеры и цвета этих символов
# задаются соответствующими аргументами функции 
 
termplot(mod.obj)
# изображает частные эффекты переменных из регрессионной модели mod.obj;
 
# Многие графические функции управлются при помощи следующих аргументов:
 
add = FALSE
# если TRUE, то новый график будет прорисован поверх 
# предыдущего (если он существует) 
 
axes = TRUE
# если FALSE, оси графика и рамка вокруг него не будут нарисованы
 
type="p"
# задает тип графика: "p" - точки, "l" - линии, "b" - точки,
# соединенные линиями; "o" - то же, но точки представлены открытыми кружками,
# "h" - вертикальные линии; "s" - ступенчатые линии
 
xlim = , ylim =
# устанавливают верхний и нижний лимиты значений координатных осей, например:
# xlim=c(1, 10) или xlim=range(x)
 
xlab = , ylab =
# задают названия соответствующих осей (в виде текстовых векторов)
 
main =
# главный заголовок графика (должен быть текстовым вектором)
 
sub =
# второстепенный заголовок график (изображается более мелким шрифтом)

Графические функции низкого уровня

points(x, y)
# добавляет к графику точки с координатами х и у; можно использовать аргумент
# type = ... (см. выше), чтобы установить определенный вид этих точек
 
lines(x, y)
# то же, но для линий

text(x, y, labels, ...)
# добавляет к графику текст, уканный при помощи аргумента labels, в место
# с координатами х и у
 
mtext(text, side = 3, line = 0, ...)
# добавляет к графику текст, заданный аргументом text; сторона графика,
# куда будет добавлен тект, определяется параметром side (см. axis() ниже);
# аргумент line определяет, как близко к самому графику должен находиться
# добавляемый текст
 
segments(x0, y0, x1, y1)
# изображает линию, проходящую из точки с координатами (x0, y0) в точку
# с координатами (x1, y1)
 
arrows(x0, y0, x1, y1, angle= 30, code=2)
# то же, что и segments(), но для стрелок; головка стрелки будет изображена
# в точке с координатами (x0, y0) если code = 1, в точке (x1, y1) если
# code = 2, и с обеих сторон стрелки если code = 3; аргумент angle 
# управляет тем, насколько остра головка стрелки
 
abline(a, b)
# рисует линию, заданную уравнением  y = a + b*x
 
abline(h = y)
# рисует горизонтальную линию, отходящую от координаты у
 
abline(v = x)
# рисует вертикальную линию, отходящую от координаты х
 
abline(lm.obj)
# изображает регрессионную прямую, параметры которой хранятся в объекте
# lm.mod; объект lm.obj создается предварительно при помощи функции lm()
 
rect(x1, y1, x2, y2)
# рисует прямоугольник, чьи левая, правая, нижняя и верхняя грани задаются
# координатами x1, y1, x2 и y2 соответственно
 
polygon(x, y)
# рисует полигон, чьи координаты хранятся в объектах х и у
 
legend(x, y, legend)
# добавляет легенду в точке (х, у) с символами, которые задаются при помощи
# аргумента legend
 
title()
# добавляет к графику заголовок (также можно добавить подзаголовок)
 
axis(side, vect)
# добавляет к графику ось внизу (side = 1), слева (2), сверху (3),
# или справа (4)
 
rug(а)
# изображает данные из объекта а на оси Х в виде небольших вертикальных линий
 
locator(n, type = "n", ...)
# возвращает координаты (х, у) того места на графике, куда пользователь
# кликнул мышкой n раз; также может нарисовать определенные символы 
# (type = "p") или линии (type = "l") в этом месте в соотвтетствии
# с графическими параметрами, предварительно заданными при помощи
# фукнции parameters (...); по умолчанию ничего не рисуется (type="n")

Управление графическим параметрами

# Многие из перечисленных ниже параметров могут быть установлены глобально
# при помощи команды par(...) или локально в виде аргументов
# графических функций
 
adj
# контролирует выравнивание текста (0 - по левому краю, 0.5 - по центру,
# 1 - по правому краю)
 
bg
# устанавливает цвет фона (например, bg = "red"); список 657 доступных цветов
# можно просмотреть при помощи команды
colors()
 
bty
# управляет типом рамки вокруг графика (доступные опции: "o", "l", "7", "c",
# "u", "]" - рамка будет напоминать соответствующие символы); при bty = "n"
# рамка нарисована не будет
 
cex
# управляет размером шрифта и символов; следующие параметры имеют аналогичное
# действие в отношении: чисел на координатных осях - cex.axis,
# меток осей - cex.lab, основного заголовка графика - cex.main,
# и подзаголовка - cex.sub
 
col
# задает цвет символов и линий (в виде названий цветов "red", "blue",
# и т.п. - см. colors(), или в виде "#RRGGBB" - см. rgb(), hsv(), 
# gray(), и rainbow()); так же, как и для cex, имеются варианты
# col.axis, col.lab, col.main, col.sub
 
font
# целое число, задающее стиль текста (1: нормальный, 2: курсив, 3: жирный,
# 4: жирный курсив); как и для cex, имеются варианты font.axis, font.lab,
# font.main, font.sub
 
las
# целое число, задающее ориентацию меток осей (0: параллельно осям,
# 1: горизонтально, 2: перпендикулярно, 3: вертиткально)
 
lty
# управляет типом линий; может выражаться целым числом или просто
# соответствущим названием (1 или "solid" - сплошная; 2 или
# "dashed" - прерывистая; 3 или "dotted" - в виде точек, и т.д., до 6)
 
lwd
# число, задающее ширину линии (по умолчанию 1)
 
mar
# вектор из четырех чисел, определяющих пространство между осями
# и границей графика, в виде c(bottom, left, top, right);
# по умолчанию mar = c(5.1, 4.1, 4.1, 2.1)
 
mfcol
# вектор в виде c(nr, nc), позволяющий разбить окно графического
# устройства на nr строк и nc столбцов; каждый новый график будет
# потом последовательно нарисован в соответствующих ячейках
# получившихся столбцов
 
mfrow
# то же, но графики будут нарисованы прострочно
 
pch
# управляет типом символа; задается либо целым числом от 1 and 25, либо любым
# символом, заключенным в кавычки ""
 
ps
# целое число, определяющее размер (в пикселах) текста и символов
 
pty
# текстовое выражение, определяюще форму пространства, в котором будет
# нарисован график, например, "s" - квадрат
 
tck
# число, определяющее длину насечек на координатных осях; при tck = 1 будет
# нарисована координатная сетка
 
xaxt
# если xaxt="n", ось Х не будет нарисована (полезно использовать в связке с
# axis(side = 1, ...))
 
yaxt
# то же для оси Y (полезно использовать в связке с axis(side = 1, ...))

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 ~ x*y | g1*g2)
# цветной график значений z, координаты которых заданы
# переменными х и у (очевидно, что x, y и z должны иметь
# одинаковую длину); g1, g2... (если присутствуют) - 
# факторы или числовые переменные, чьи значения автоматически
# разбиваются на равномерные отрезки 
 
wireframe(z ~ x*y | g1*g2)
# функция для построения трехмерных диаграмм рассеяния
# и плоскостей; z, x и у - числовые векторы; g1, g2...
# (если присутствуют) - факторы или числовые переменные,
# чьи значения автоматически разбиваются на равномерные отрезки 
 
cloud(z ~ x*y | g1*g2)
# трехмерная диаграмма рассеяния

Статистические модели
nlm(f,p)
# минимизирует функцию f, используя алгоритм типа ньютоновского;
# р - вектор с исходными значениями параметров функции
 
lm(formula)
# рассчитывает линейную регрессионную модель; формула модели formula обычно
# представлена в виде y ~ x1 + x2 + ...,
# где у - переменная-отклик, x1, x2, ... - предикторы 
 
glm(formula, family = ...)
# рассчитывает логистическую регрессионную модель; аргумент
# family служит для указания функции распределения остатков модели
 
nls(formula)
# рассчитывает параметры нелинейной регрессионной модели по методу
# наименьших квадратов
 
spline(x, y)
# выполняет интерполяцию точек с координатами (х, у) кубическим сплайном
 
loess(formula)
# используя локальное сглаживание, выполняет подгонку
# полиномиальной плоскости к массиву точек, заданной одним
# или несколькими предикторами
 
# Многие функции, рассчитывающие статистические модели, имеют
# общие аргументы, в частности:
 
data = ...
# таблица данных, в которой хранятся переменные, указанные в
# формуле функции
 
subset = ...
# указывает, какие имено значения переменных должны принимать
# участие при расчете модели
 
na.action =
# указывает, как следует поступать с отсутствующими значениями;
# например, для игнорирования таких значений применяется
# na.action = "na.omit"; 
 
# Для рассчитанных моделей часто применимы следующие функции
# общего назначения:
 
predict(fit, ...)
# возвращает либо те значения, которые модель fit предсказывает
# на основе исходных данных, либо те значения, которые модель
# предсказывает для новых, заданных пользователем данных
 
df.residual(fit)
# возвращает число степеней свободы для остатков модели
 
coef(fit)
# возвращает рассчитанные коэффициенты модели (в ряде случаев, 
# вместе с их стандартными ошибками)
 
residuals(fit)
# возвращает остатки модели
 
deviance(fit)
# возвращает девиату модели
 
fitted(fit)
# возвращает те значения, которые модель fit предсказывает
# на основе исходных данных
 
logLik(fit)
# рассчитывает логарифм правдоподобия и число параметров модели
 
AIC(fit)
# возвращает информационный критерий Акайке для модели fit

Избранные статистические тесты

aov(formula)
# выполняет дисперсионный анализ
 
anova(fit,...)
# выполняет дисперсионный анализ (или анализ девиат) для одной
# или нескольких подогнанных моделей fit
 
density(x)
# рассчитывает ядерные плотности вероятностей для значений х
 
binom.test()
# выполняет точный тест простой гипотезы о вероятности успеха
# в испытаниях Бернулли (другими словами, позволяет проверить,
# согласуются ли эмпирические частоты появляения какого-то
# исхода испытаний с ожидаемыми)
 
pairwise.t.test()
# выполняет попарные сравнения нескольки независимых или
# зависимых выборок (во втором случае необходим аргумент
# paired = TRUE), при одновременной поправке Р-значений на
# число сравнений (метод поправки определяется аргументом
# p.adjust.method)
 
prop.test()
# позволяет проверить гипотезу о том, что частоты какого-либо
# признака равны во всех анализируемых группах (или о том,
# что они равны определенным значениям)
 
t.test()
# выполняет тест Стьюдента для двух независимых или зависимых
# выборок (во втором случае необходим аргумент paired = TRUE);
# возможно также сравнение выборочной средней с априори выбранной
# величиной (эта величина указывается при помощи аргумента mu)

# Для того, чтобы узнать о других статистических тестах,
# реализованных в R, выполните команду
help.search("test")

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

function(список аргументов) {выражение}
# позволяет создать пользовательскую функцию 
 
if(условие) {выражение}
# проверяет выполнение условия; если оно выполняется, исполняет
# выражение, указанное в фигурных скобках
 
if(условие) {выражение 1} else {выражение 2}
# проверяет выполнение условия; если оно выполняется, исполняет
# выражение 1, иначе - выражение 2
 
for(i in 1:n) {выражение}
# повторяет выражение, указанное в фигурных скобках, определенное
# число раз (в этом примере n раз)
 
while(условие) {выражение}
# исполняет выражение, указанное в фигурных скобках,до те пор, пока
# условие выполняется
 
do.call(имя функции, аргументы)
# исполняет функцию, обращаясь к ней по имени; можно указать
# конкретные аргументы, которые будут управлять поведением функции