Изменения

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

20 031 байт добавлено, 14:10, 30 марта 2014
м
Получение информации об объектах
Большинство функций в R имеют онлайн-документацию.
{| class="prettytablewide"|-
| <code>help(topic)</code> || документация по теме.
|-
| <code>ls()</code> || выводит список всех объектов в заданном окружении (environment); с помощью аргумента <code>pattern</code> можно отфильтровать объекты по заданному шаблону.
|-
| <ccodecode>ls.str()</code> || отображает структуру всех R-объектов в заданном окружении.
|-
| <code>dir()</code> || отображает список файлов в указанной директории.
== Операторы ==
{| class="prettytablewide"|-
| <code><-</code> || оператор присвоения (левый), бинарный.
|-
| <code>:</code> || двоеточие, бинарный, используется в формулах в моделировании для обозначения взаимодействия.
|-
| <code>::</code> || двойное двоеточие, используется для доступа к функции внутри пакетпакета, без его предварительной загрузки <code>pkg::function</code>.
|-
| <code>*</code> || произведение, бинарный.
| <code>%o%</code> || [http://ru.wikipedia.org/wiki/Тензорное_произведение тензорное произведение], бинарный.
|-
| <code>%x%</code> || [http://ru.wikipedia.org/wiki/Произведение_Кронекера Произведение произведение Кронекера], бинарный.
|-
| <code>%in%</code> || оператор соответствия, бинарный.
== Пакеты ==
 
{| class="prettytable wide"
| <code>install.packages(“pkgs”, lib)</code> || загружает и установливает пакеты из репозитория <code>lib</code> или другого внешнего источника.
|-
| <code>update.packages</code> || проверка новых версий и рекомендаций к установке.
|-
| <code>library(pkg)</code> || загружает пакет, если пакет не указан, то выводится список пакетов.
|-
| <code>detach(pkg)</code> || выгружает пакет из памяти.
|}
 
== Индексирование объектов в R ==
 
=== Индексирование векторов ===
 
{| class="prettytable wide"
| <code>x[n]</code> || возвращает n-й элемент вектора <code>x</code>.
|-
| <code>x[-n]</code> || возвращает все элементы вектора <code>x</code>, за исключением n-го.
|-
| <code>x[1:n]</code> || возвращает первые n элементов вектора <code>x</code>.
|-
| <code>x[-(1:n)]</code> || возвращает элементы вектора <code>x</code> с <math>n+1</math> до последнего.
|-
| <code>x[c(1,4,2)]</code> || возвращает определенные элементы вектора <code>x</code> (здесь 1-й, 4-й и 2-й).
|-
| <code>x["name"]</code> || возвращает элемент вектора <math>x</math> с именем "name".
|-
| <code>x[x > 3]</code> || возвращает все элементы вектора <code>x</code> со значением <math>>3</math>.
|-
| <code>x[x > 3 & x < 5]</code> || возвращает все элементы вектора <code>x</code> со значением <math>>3</math> и <math><5</math>.
|-
| <code>x[x %in% c("a", "if")] </code> || возвращает только те элементы вектора <code>x</code>, которые указаны после оператора <code>%in%</code> (здесь из вектора <code>x</code> были бы извлечены текстовые значения "a", и "if").
|}
 
=== Индексирование списков ===
 
{| class="prettytable wide"
| <code>x[n]</code> || возвращает список элементами n.
|-
| <code><nowiki>x[[n]]</nowiki></code> || возвращает n-й элемент списка <code>x</code>.
|-
| <code><nowiki>x[["name"]]</nowiki></code> || возвращает элемент списка <code>x</code> с именем "name".
|-
| <code>x$name</code> || команда, идентичная предыдущей (с частичным совпадением).
|}
 
=== Индексирование матриц ===
 
{| class="prettytable wide"
| <code>x[i, j]</code> || возвращается элемент матрицы <code>x</code> на пересечении i-й строки и j-го столбца.
|-
| <code>x[i, ]</code> || возвращает i-ю строку матрицы <code>x</code>.
|-
| <code>x[, j]</code> || возвращает j-й столбец матрицы <code>x</code>.
|-
| <code>x[, c(1, 3)]</code> || возвращает указанные номера столбцов матрицы <code>x</code> (здесь 1-й и 3-й столбцы).
|-
| <code>x[ʺnameʺ, ]</code> || возвращает строку матрицы <code>x</code> с именем "name".
|}
 
=== Индексирование таблиц данных ===
 
То же, что и [[R:Краткая справка#Индексирование_матриц|индексирование матриц]] плюс следующее ниже:
 
{| class="prettytable wide"
| <code><nowiki>x[["name"]]</nowiki></code> || возвращает столбец таблицы данных <code>x</code> с именем "name".
|-
| <code>x$name</code> || команда, идентичная предыдущей (с частичным совпадением).
|}
 
== Ввод и вывод (I/O) ==
 
=== Ввод и вывод объектов данных R ===
 
{| class="prettytable wide"
| <code>data(x)</code> || загружает таблицу данных <code>x</code>, если аргумент не указан, выводит список доступных таблиц данных.
|-
| <code>save(file, ...)</code> || сохраняет все указанные объекты (<code>...</code>) в кросс-платформенном двоичном файле [http://ru.wikipedia.org/wiki/External_Data_Representation XDR]-формата (<code>.RData</code>, <code>.Rda</code>).
|-
| <code>save.image(file)</code> || сохраняет все объекты, созданные в ходе работы, в кросс-платформенном двоичном файле [http://ru.wikipedia.org/wiki/External_Data_Representation XDR]-формата (<code>.RData</code>, <code>.Rda</code>).
|-
| <code>load(file)</code> || загружает данные, записанные с помощью функции <code>save()</code>.
|-
| <code>saveRDS(x, file)</code> || сохраняет единичный объект <code>x</code> в указанный файл.
|-
| <code>readRDS(file)</code> || загружает объект, сохранённый с помощью функции <code>saveRDS()</code>.
|}
 
=== Ввод и вывод из баз данных ===
 
Полезные пакеты:
 
{| class="prettytable wide"
| {{r-package|DBI}} || предоставляет интерфейс для взаимодействия R и реляционных баз данных [http://ru.wikipedia.org/wiki/Система_управления_базами_данных СУБД].
|-
| {{r-package|RJDBC}} || предоставляет доступ к базам данных через [http://ru.wikipedia.org/wiki/Java_Database_Connectivity JDBC] интерфейс.
|-
| {{r-package|RMySQL}} || предоставляет интерфейс для взаимодействия R с базами данных [http://ru.wikipedia.org/wiki/MySQL MySQL].
|-
| {{r-package|RODBC}} || предоставляет доступ к базам данных через [http://ru.wikipedia.org/wiki/ODBC ODBC].
|-
| {{r-package|ROracle}} || предоставляет интерфейс для взаимодействия R с базами данных [http://ru.wikipedia.org/wiki/Oracle_Database Oracle].
|-
| {{r-package|RpgSQL}} || предоставляет интерфейс для взаимодействия R с базами данных [http://ru.wikipedia.org/wiki/PostgreSQL PostgreSQL].
|-
| {{r-package|RSQLite}} || предоставляет интерфейс для взаимодействия R с базами данных [http://ru.wikipedia.org/wiki/SQLite SQLite].
|}
 
=== Ввод и вывод из разных форматов ===
 
{| class="prettytable wide"
| <code>read.table(file)</code> || считывает файл с данными и создает из него таблицу данных (<code>data.frame</code>), тип разделителя указывается аргументом <code>sep</code> (по умолчанию <code>sep = " "</code>, т.е. пробел).
|-
| <code>read.csv(file)</code> || считывает файл с данными, разделёнными запятыми ([http://ru.wikipedia.org/wiki/CSV csv-файл]), и создает из него таблицу данных (<code>data.frame</code>).
|-
| <code>read.delim(“file”)</code> || считывает файл с данными, разделёнными отступами ([http://ru.wikipedia.org/wiki/TSV tsv-файл]), и создает из него таблицу данных (<code>data.frame</code>).
|-
| <code>read.fwf(“file”)</code> || считывает файл с данными фиксированной ширины (fwf-файл) и создает из него таблицу данных (<code>data.frame</code>).
|-
| <code>write.table(x, file)</code> || сохраняет объект <code>x</code> в файл, предварительно преобразовав этот объект в таблицу данных (<code>data.frame</code>).
|-
| <code>write.csv(x, file)</code> || сохраняет объект <code>x</code> в csv-файл, предварительно преобразовав этот объект в таблицу данных (<code>data.frame</code>).
|-
| <code>download.file(url)</code> || загружает файл из сети Интернет.
|-
| <code>url.show(url)</code> || отображает удалённый адрес.
|-
| <code>file.chow</code> || отображает локальный или удалённый файл.
|-
| <code>cat(..., file = ʺʺ, sep = ʺ ʺ)</code> || превращает все указанные аргументы (...) в текст и выводит результат на экран<ref>Для вывода результата в файл необходимо указать имя файла: <code>file = "filename"</code>.</ref>; разделитель между получаемыми текстовыми значениями задается при помощи аргумента <code>sep</code>.
|-
| <code>print(x, ...)</code> || выводит на экран объект <code>x</code>; это функция общего назначения - конкретный результат ее работы будет зависеть от класса объекта <code>x</code>.
|-
| <code>format(x,...)</code> || позволяет отформатировать объект <code>x</code> так, что он будет выглядеть "аккуратно" при выводе на экран.
|-
| <code>sink(file)</code> || выводит результаты выполнения других команд в файл в режиме реального времени; для прекращения действия этой команды выполните команду <code>sink()</code>.
|}
 
=== Ввод и вывод из буфера обмена ===
 
Вместо файлов R может также работать с буфером обмена.
 
{| class="prettytable wide"
| Windows/Linux: <code>x <‐ read.delim(ʺclipboardʺ)</code><ref>При возникновении проблем с отображением символов следует указать кодировку символов с помощью аргумента <code>encoding</code>.</ref>
| rowspan="2" | копирует таблицу данных из буфера обмена в переменную <code>x</code><ref>Может использоваться для копирования таблиц из MS Excel или OpenOffice Calc.</ref>.
|-
| MacOS: <code>x <‐ read.delim(pipe(“pbpaste”))</code>
|-
| Windows: <code>write.table(x, "clipboard", sep ="\t", col.names = NA)</code>
| rowspan="3" | копирует содержимое переменной <code>x</code> в буфер обмена<ref>Из буфера обмена данная таблица может быть вставлена в текстовый редактор или редактор таблиц.</ref>.
|-
| MacOS: <code>write.table(x, pipe("pbcopy", "w"), sep ="\t", col.names = NA)</code>
|-
| style="width: 1px; white-space: nowrap;" | Linux: <code>write.table(x, pipe("xclip -i", "w"), sep = "\t", col.names = NA)</code><ref>Для работы с буфером обмена в Linux необходимо установить пакет <code>xclip</code> и запустить его командой <code>xclip -silent</code> перед запуском R-сессии.</ref>
|}
 
См. также функцию <code>read.clipboard()</code> из пакета {{r-package|psych}}.
 
== Создание данных ==
 
{| class="prettytable wide"
| <code>c(...)</code> || функция общего назначения, объединяет аргументы в один вектор определенного типа; с аргументом <code>recursive = TRUE</code> объединяет все элементы списка в один вектор.
|-
| <code>от:до</code> || создаёт последовательность; оператор <code>:</code> имеет приоритет перед другими операторами: <code>1:4 + 1</code> будет <code>2 3 4 5</code>.
|-
| <code>seq(from, to)</code> || формирует последовательность числовых или других значений; <code>by</code> указывает шаг; length - продолжительность.
|-
| <code>seq(along = x)</code> || формирует последовательность <code>1, 2, ..., length(along)</code>; полезно при использовании циклов.
|-
| <code>rep(x, times)</code> || повторяет <code>x</code> то количество раз, которое задано аргументом <code>times</code>; используется аргумент <code>each</code> для повторения каждого элемента <code>x</code>: <code>rep(c(1, 2, 3), 2)</code> будет <code>1 2 3 1 2 3</code>; <code>rep(c(1, 2, 3), each = 2)</code> будет <code>1 1 2 2 3 3</code>.
|-
| <code>data.frame(...)</code> || создает таблицу данных из поименованных или непоименованных аргументов; если объект <code>x</code> не обладает достаточной длиной, его элементы при создании массива будут использованы повторно.
|-
| <code>list(...)</code> || создает список объектов из поименованных или непоименованных аргументов; в отличие от столбцов таблицы данных, список может содержать объекты разной длины.
|-
| <code>array(x, dim)</code> || создаёт массив данных из объекта <code>x</code>; аргумент dim используется для указания размерности массива (например, <code>dim = c(3,4,2))</code>); если объект <code>x</code> не обладает достаточной длиной, его элементы при создании массива будут использованы повторно.
|-
| <code>matrix(x, nrow, ncol)</code> || создает матрицу из вектора <code>x</code>; количество строк задается аргументом <code>nrow</code>, количество столбцов - аргументом <code>ncol</code>; если объект <code>x</code> не обладает достаточной длиной, его элементы при создании матрицы будут использованы повторно.
|-
| <code>gl(n, k, length = n*k, labels = 1:n)</code> || создаёт фактор; <code>n</code> - количество уровней фактора; <code>k</code> - число повторов для каждого уровня; <code>length</code> - размер итогового объекта; <code>labels</code> - необязательный аргумент, который можно использовать для указания названий каждого уровня фактора.
|-
| <code>expand.grid(...)</code> || создаёт таблицу данных (<code>data.frame</code>) из сочетания всех элементов вектора или уровней фактора.
|}
 
== Преобразование объектов ==
 
Следующие команды конвертируют объект <code>x</code> в объект соответствующего класса<ref>Полный список доступен с помощью команды <code>methods(as)</code>.</ref>:
 
{| class="prettytable wide"
| <code>as.array(x)</code> || массив данных.
|-
| <code>as.character(x)</code> || вектор строк/символов.
|-
| <code>as.data.frame(x)</code> || таблица данных.
|-
| <code>as.factor(x)</code> || фактор.
|-
| <code>as.logical(x)</code> || логический вектор.
|-
| <code>as.numeric(x)</code> || числовой вектор.
|}
 
== Получение информации об объектах ==
 
Следующие команды позволяют проверить, принадлежит ли объект <code>x</code> или его отдельные элементы к определенному типу<ref>Полный список доступен с помощью команды <code>methods(is)</code>.</ref>:
 
{| class="prettytable wide"
| <code>is.na(x)</code> || отсутствующее (пропущенное) значение.
|-
| <code>is.null(x)</code> || ноль.
|-
| <code>is.nan(x)</code> || [http://ru.wikipedia.org/wiki/NaN NaN].
|-
| <code>is.array(x)</code> || массив данных.
|-
| <code>is.data.frame(x)</code> || таблица данных.
|-
| <code>is.numeric(x)</code> || числовой вектор.
|-
| <code>is.complex(x)</code> || вектор комплексных чисел.
|-
| <code>is.character(x)</code> || вектор строк/символов.
|-
| <code>x</code> || выводит объект <code>x</code>.
|-
| <code>head(x)</code> || возвращает первую часть объекта <code>x</code><ref>Количество возвращаемых элементов объекта указывает с помощью аргумента <code>n</code> (по умолчанию равен 6).</ref>.
|-
| <code>tail(x)</code> || возвращает последнюю часть объекта <code>x</code>.
|-
| <code>summary(x)</code> || выводит обобщенную информацию об объекте <code>x</code><ref><code>summary()</code> является функцией общего назначения и результат её работы зависит от класса объекта <code>x</code>.</ref>.
|-
|- <code>str(x)</code> || возвращает внутреннюю структуру объекта <code>x</code>.
|-
| <code>length(x)</code> || возвращает число элементов, содержащихся в объекте <code>x</code>.
|-
| <code>dim(x)</code> || возвращает размерность объекта <code>х</code>; используя команду вроде <code>dim(x) = c(3,2)</code> можно принудительно задать определенную размерность объекта <code>x</code>.
|-
|- <code>dimnames(x)</code> || возвращает число элементов, содержащихся в объекте <code>x</code>.
|-
| <code>nrow(x)</code> || возвращает число строк в таблице или матрице <code>x</code>.
|-
| <code>ncol(x)</code> || возвращает число столбцов в таблице или матрице <code>x</code>.
|-
| <code>class(x)</code> || возвращает или задает (например, <code>class(x) <- "myclass"</code>) класс объекта <code>x</code>.
|-
| <code>unclass(x)</code> || удаляет атрибут класса у объекта <code>x</code>.
|-
| <code>attr(x, which)</code> || возвращает или задает атрибут "which" объекта <code>x</code>.
|-
| <code>attributes(obj)</code> || возвращает или задает список атрибутов объекта <code>obj</code>.
|}
== Примечания ==