R:Краткая справка

Данный материал представляет собой перевод R Reference Card 2.0. При подготовке материала также использовался перевод R Reference Card, сделанный Сергеем Мастицким.

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

Большинство функций в R имеют онлайн-документацию.

help(topic) документация по теме.
?topic эквивалент команды help(topic); специальные символы должны быть заключены в кавычки: ?"&&".
help.search("topic") поиск информации по "topic" во всей встроенной справочной системе R; эквивалент команды ??тема.
apropos("topic") выводит имена всех объектов, содержащих регулярное выражение "topic".
help.start() запускает html-версию встроенной справочной системы R.
summary(x) функция общего назначения[1], выводит обобщённую информацию об объекте x, как правило, это набор статистических параметров.
str(x) отображает внутреннюю структуру R-объекта x.
ls() выводит список всех объектов в заданном окружении (environment); с помощью аргумента pattern можно отфильтровать объекты по заданному шаблону.
ls.str() отображает структуру всех R-объектов в заданном окружении.
dir() отображает список файлов в указанной директории.
methods(x) отображает S3-методы для объекта x.
methods(class = class(x)) список всех методов, обрабатывающих класс x.
findFn() ищет функцию в базе данных справки пакетов и возвращает data.frame (пакет sos).

Операторы

<- оператор присвоения (левый), бинарный.
-> оператор присвоения (правый), бинарный.
= оператор присвоения (левый), не рекомендуется к использованию[2].
<<- оператор присвоения (левый) вне лексического контекста, не для начинающих.
$ подмножество списка, бинарный.
- минус, может как унарным, так и бинарным.
+ плюс, может как унарным, так и бинарным.
~ тильда, используется для определения формул в моделировании.
: двоеточие, бинарный, используется в формулах в моделировании для обозначения взаимодействия.
:: двойное двоеточие, используется для доступа к функции внутри пакета, без его предварительной загрузки pkg::function.
* произведение, бинарный.
/ деление, бинарный.
^ возведение в степень, бинарный.
%x% специальные бинарные операторы, x может быть заменён на любое допустимое имя.
%% остаток от деления, бинарный.
%/% неполное частное, бинарный.
%*% умножение матриц, бинарный.
%o% тензорное произведение, бинарный.
%x% произведение Кронекера, бинарный.
%in% оператор соответствия, бинарный.
!x логическое отрицание: НЕ x.
x & y поэлементное логическое И.
x && y логическое векторное И.
x | y поэлементное логическое ИЛИ.
x || y поэлементное векторное ИЛИ.
xor(x, y) поэлементное исключающее ИЛИ.
< меньше чем, бинарный.
> больше чем, бинарный.
== равно, бинарный.
<= меньше или равно, бинарный.
>= больше или равно, бинарный.

Пакеты

install.packages(“pkgs”, lib) загружает и установливает пакеты из репозитория lib или другого внешнего источника.
update.packages проверка новых версий и рекомендаций к установке.
library(pkg) загружает пакет, если пакет не указан, то выводится список пакетов.
detach(pkg) выгружает пакет из памяти.

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

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

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

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

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

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

x[i, j] возвращается элемент матрицы x на пересечении i-й строки и j-го столбца.
x[i, ] возвращает i-ю строку матрицы x.
x[, j] возвращает j-й столбец матрицы x.
x[, c(1, 3)] возвращает указанные номера столбцов матрицы x (здесь 1-й и 3-й столбцы).
x[ʺnameʺ, ] возвращает строку матрицы x с именем "name".

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

То же, что и индексирование матриц плюс следующее ниже:

x[["name"]] возвращает столбец таблицы данных x с именем "name".
x$name команда, идентичная предыдущей (с частичным совпадением).

Ввод и вывод (I/O)

Ввод и вывод объектов данных R

data(x) загружает таблицу данных x, если аргумент не указан, выводит список доступных таблиц данных.
save(file, ...) сохраняет все указанные объекты (...) в кросс-платформенном двоичном файле XDR-формата (.RData, .Rda).
save.image(file) сохраняет все объекты, созданные в ходе работы, в кросс-платформенном двоичном файле XDR-формата (.RData, .Rda).
load(file) загружает данные, записанные с помощью функции save().
saveRDS(x, file) сохраняет единичный объект x в указанный файл.
readRDS(file) загружает объект, сохранённый с помощью функции saveRDS().

Ввод и вывод из баз данных

Полезные пакеты:

DBI предоставляет интерфейс для взаимодействия R и реляционных баз данных СУБД.
RJDBC предоставляет доступ к базам данных через JDBC интерфейс.
RMySQL предоставляет интерфейс для взаимодействия R с базами данных MySQL.
RODBC предоставляет доступ к базам данных через ODBC.
ROracle предоставляет интерфейс для взаимодействия R с базами данных Oracle.
RpgSQL предоставляет интерфейс для взаимодействия R с базами данных PostgreSQL.
RSQLite предоставляет интерфейс для взаимодействия R с базами данных SQLite.

Ввод и вывод из разных форматов

read.table(file) считывает файл с данными и создает из него таблицу данных (data.frame), тип разделителя указывается аргументом sep (по умолчанию sep = " ", т.е. пробел).
 read.csv(file) считывает файл с данными, разделёнными запятыми (csv-файл), и создает из него таблицу данных (data.frame).
 read.delim(“file”) считывает файл с данными, разделёнными отступами (tsv-файл), и создает из него таблицу данных (data.frame).
 read.fwf(“file”) считывает файл с данными фиксированной ширины (fwf-файл) и создает из него таблицу данных (data.frame).
write.table(x, file) сохраняет объект x в файл, предварительно преобразовав этот объект в таблицу данных (data.frame).
write.csv(x, file) сохраняет объект x в csv-файл, предварительно преобразовав этот объект в таблицу данных (data.frame).
download.file(url) загружает файл из сети Интернет.
url.show(url) отображает удалённый адрес.
file.chow отображает локальный или удалённый файл.
cat(..., file = ʺʺ, sep = ʺ ʺ) превращает все указанные аргументы (...) в текст и выводит результат на экран[3]; разделитель между получаемыми текстовыми значениями задается при помощи аргумента sep.
print(x, ...) выводит на экран объект x; это функция общего назначения - конкретный результат ее работы будет зависеть от класса объекта x.
format(x,...) позволяет отформатировать объект x так, что он будет выглядеть "аккуратно" при выводе на экран.
sink(file) выводит результаты выполнения других команд в файл в режиме реального времени; для прекращения действия этой команды выполните команду sink().

Ввод и вывод из буфера обмена

Вместо файлов R может также работать с буфером обмена.

Windows/Linux: x <‐ read.delim(ʺclipboardʺ)[4] копирует таблицу данных из буфера обмена в переменную x[5].
MacOS: x <‐ read.delim(pipe(“pbpaste”))
Windows: write.table(x, "clipboard", sep ="\t", col.names = NA) копирует содержимое переменной x в буфер обмена[6].
MacOS: write.table(x, pipe("pbcopy", "w"), sep ="\t", col.names = NA)
Linux: write.table(x, pipe("xclip -i", "w"), sep = "\t", col.names = NA)[7]

См. также функцию read.clipboard() из пакета psych.

Создание данных

c(...) функция общего назначения, объединяет аргументы в один вектор определенного типа; с аргументом recursive = TRUE объединяет все элементы списка в один вектор.
от:до создаёт последовательность; оператор : имеет приоритет перед другими операторами: 1:4 + 1 будет 2 3 4 5.
seq(from, to) формирует последовательность числовых или других значений; by указывает шаг; length - продолжительность.
seq(along = x) формирует последовательность 1, 2, ..., length(along); полезно при использовании циклов.
rep(x, times) повторяет x то количество раз, которое задано аргументом times; используется аргумент each для повторения каждого элемента x: rep(c(1, 2, 3), 2) будет 1 2 3 1 2 3; rep(c(1, 2, 3), each = 2) будет 1 1 2 2 3 3.
data.frame(...) создает таблицу данных из поименованных или непоименованных аргументов; если объект x не обладает достаточной длиной, его элементы при создании массива будут использованы повторно.
list(...) создает список объектов из поименованных или непоименованных аргументов; в отличие от столбцов таблицы данных, список может содержать объекты разной длины.
array(x, dim) создаёт массив данных из объекта x; аргумент dim используется для указания размерности массива (например, dim = c(3,4,2))); если объект x не обладает достаточной длиной, его элементы при создании массива будут использованы повторно.
matrix(x, nrow, ncol) создает матрицу из вектора x; количество строк задается аргументом nrow, количество столбцов - аргументом ncol; если объект x не обладает достаточной длиной, его элементы при создании матрицы будут использованы повторно.
gl(n, k, length = n*k, labels = 1:n) создаёт фактор; n - количество уровней фактора; k - число повторов для каждого уровня; length - размер итогового объекта; labels - необязательный аргумент, который можно использовать для указания названий каждого уровня фактора.
expand.grid(...) создаёт таблицу данных (data.frame) из сочетания всех элементов вектора или уровней фактора.

Преобразование объектов

Следующие команды конвертируют объект x в объект соответствующего класса[8]:

as.array(x) массив данных.
 as.character(x) вектор строк/символов.
 as.data.frame(x) таблица данных.
 as.factor(x) фактор.
 as.logical(x) логический вектор.
 as.numeric(x) числовой вектор.

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

Следующие команды позволяют проверить, принадлежит ли объект x или его отдельные элементы к определенному типу[9]:

is.na(x) отсутствующее (пропущенное) значение.
 is.null(x) ноль.
 is.nan(x) NaN.
 is.array(x) массив данных.
is.data.frame(x) таблица данных.
 is.numeric(x) числовой вектор.
is.complex(x) вектор комплексных чисел.
 is.character(x) вектор строк/символов.
x выводит объект x.
head(x) возвращает первую часть объекта x[10].
tail(x) возвращает последнюю часть объекта x.
summary(x) выводит обобщенную информацию об объекте x[11].
length(x) возвращает число элементов, содержащихся в объекте x.
dim(x) возвращает размерность объекта х; используя команду вроде dim(x) = c(3,2) можно принудительно задать определенную размерность объекта x.
nrow(x) возвращает число строк в таблице или матрице x.
ncol(x) возвращает число столбцов в таблице или матрице x.
class(x) возвращает или задает (например, class(x) <- "myclass") класс объекта x.
unclass(x) удаляет атрибут класса у объекта x.
attr(x, which) возвращает или задает атрибут "which" объекта x.
attributes(obj) возвращает или задает список атрибутов объекта obj.

Примечания

  1. Т.е. используется для многих классов объектов.
  2. Используется в основном для присвоения значений аргументам функций.
  3. Для вывода результата в файл необходимо указать имя файла: file = "filename".
  4. При возникновении проблем с отображением символов следует указать кодировку символов с помощью аргумента encoding.
  5. Может использоваться для копирования таблиц из MS Excel или OpenOffice Calc.
  6. Из буфера обмена данная таблица может быть вставлена в текстовый редактор или редактор таблиц.
  7. Для работы с буфером обмена в Linux необходимо установить пакет xclip и запустить его командой xclip -silent перед запуском R-сессии.
  8. Полный список доступен с помощью команды methods(as).
  9. Полный список доступен с помощью команды methods(is).
  10. Количество возвращаемых элементов объекта указывает с помощью аргумента n (по умолчанию равен 6).
  11. summary() является функцией общего назначения и результат её работы зависит от класса объекта x.