Ниже представлен список функций, которые стоит запомнить или, по меньшей мере, иметь всегда под рукой для уверенного пользования языком R. Этот список составлен на основе "шпаргалки" R-команд, опубликованной Томом Шортом (Tom Short) на сайте CRAN, и несколько видоизменен.
Получение информации о функциях и объектах R
Получение информации о функциях и объектах 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(имя функции, аргументы) # исполняет функцию, обращаясь к ней по имени; можно указать # конкретные аргументы, которые будут управлять поведением функции