Журнал LinuxFormat - перейти на главную

LXF100-101:R

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(викификация, оформление, иллюстрация)
 
(Первые шаги)
Строка 133: Строка 133:
  
 
в ''R'' – это функция, которой можно передать аргумент. Даже если
 
в ''R'' – это функция, которой можно передать аргумент. Даже если
 +
аргумент не указан, то скобки всё равно надо ввести. Если этого не
 +
сделать, то вместо выхода из ''R'' на экран будет выведено определение функции:
 +
 +
>q
 +
function (save = “default”, status = 0, runLast = TRUE)
 +
.Internal(quit(save, status, runLast))
 +
<environment: namespace:base>
 +
 +
Чтобы узнать, как правильно вызывать функцию, следует воспользоваться встроенной справкой. Есть два пути. Первый – вызвать
 +
команду справки:
 +
 +
> help(q)
 +
 +
или
 +
 +
> ?q
 +
 +
Текст справки будет выведен в основном окне программы. Если внимательно прочитать его, то станет ясно, что выйти из ''R'' можно, и
 +
не отвечая на дополнительный вопрос, если ввести:
 +
 +
> q(“no”)
 +
 +
Зачем же нужен этот вопрос? Или, другими словами, что будет, если ответить положительно? В этом случае в рабочую папку ''R'' (ту,
 +
из которой он вызван), запишутся два файла: бинарный '''.RData''' и текстовый '''.Rhistory'''. Первый содержит все объекты, созданные за время
 +
сессии. Второй – полную историю введённых команд. ''R'' работает с
 +
историей команд стандартным образом: доступ к предыдущей команде
 +
осуществляется через клавишу-стрелку «вверх».
 +
 +
Если при выходе сохранить файл '''.Rhistory''', то команды из этой сессии будут доступны и в следующей, при условии, что ''R'' будет вызван из
 +
того же самого каталога. И наоборот, если случайно сохранить рабочую среду (эти два файла), то при следующем старте они загрузятся
 +
автоматически. Иногда такое поведение ''R'' становится причиной различных недоумений, так что необходимо быть внимательным.
 +
 +
Итак, как войти и как выйти, уже понятно. Осталось сказать ещё
 +
немного про помощь. Её можно вызвать несколькими различными
 +
способами. Во-первых, посредством команд '''?''' или '''help()''', как описано
 +
выше. Во-вторых, можно вызвать команду '''help.start()'''. В этом случае
 +
откроется окно браузера, в котором будет демонстрироваться так
 +
называемая '''HTML'''-помощь. Основное её преимущество перед обычной
 +
текстовой в том, что разделы соединены гиперссылками (в Mac OS X
 +
такая помощь вызывается обычными командами). В-третьих, вместе
 +
с ''R'' устанавливается несколько руководств в формате '''PDF'''. Их можно
 +
найти в папке, содержащей документацию.
 +
 +
Наконец, часто бывает нужна «обратная» помощь – вы знаете, что
 +
вы хотите, но не знаете, как это сделать (какую команду вызвать).
 +
В этом случае могут помочь две команды: '''help.search()''' и '''apropos()'''. Вот
 +
как их надо вызывать:
 +
 +
> help.search(“vector”)

Версия 15:08, 8 апреля 2009

Новая серия! Свободный инструментарий для статистической обработки данных

Содержание

Введение в R

R
R на примере
ЧАСТЬ 1 Вы ещё анализируете данные по старинке, методом внимательного вглядывания в набор точек на графике, изредка подгоняя их к прямой с помощью многочисленных «мышекликов»? Пусть это делает за вас компьютер и R – это именно тот язык, который поможет доходчиво разъяснить ему вашу проблему.

Прежде всего, R – язык программирования для статистической обработки данных и работы с графикой, и в то же время – это свободная программная среда с открытым исходным кодом, развиваемая в рамках проекта GNU. R можно найти в любом дистрибутиве, не ставящем своей целью уместиться на одну дискетку. Например, в Debian GNU/Linux базовый пакет носит имя r-base, а подключаемые модули проще всего искать по акрониму «cran».

R применяется везде, где нужна работа с данными. Это не только статистика в узком смысле слова, но и первичный анализ (графики, таблицы сопряжённости), и продвинутое математическое моделирование. R без особых проблем может использоваться и там, где сейчас принято использовать коммерческие программы анализа уровня MatLab/Octave. С другой стороны, вполне естественно, что основная вычислительная мощь R лучше всего его проявляется при статистическом анализе: от вычисления средних величин до вейвлет-преобразований временных рядов.

География использования R очень разнообразна. Трудно найти американский или западноевропейский университет, где бы не работали бы с R. Очень многие серьезные компании (например, Boeing) используют R в своей деятельности. R для статистиков – это действительно глобально.

Немного истории

R возник как свободный аналог среды S-PLUS, которая, в свою очередь, является коммерческой реализацией языка расчётов S.

Язык S – довольно старая разработка (почти как TeX). Он возник ещё в 1976 году в компании Bell Labs, и был назван, естественно, «по мотивам» языка С. Первая реализация S была написана на FORTRAN и работала под управлением операционной системы GCOS. В 1980 г. она была перенесена в UNIX, и с этого момента S стал распространяться, в основном, в научной среде. Начиная с третьей версии (1988 г.), коммерческая реализация S называется S-PLUS. Последняя в настоящее время продвигается компанией Insightful, и доступна под Windows и различными версиями UNIX, естественно, за плату, причем весьма и весьма немаленькую (для UNIX, например, S-PLUS предлагается за $6500). Собственно говоря, именно высокая цена и сдерживала широкое распространение этого во многих отношениях замечательного продукта. Тут-то и начинается история R.

В августе 1993 г. двое молодых новозеландских ученых анонсировали свою новую разработку, которую они назвали R. По замыслу создателей, Роберта Джентльмена [Robert Gentleman] и Росса Ихака [Ross Ihaka], она должна была стать новой реализацией языка S, отличающейся от S-PLUS некоторыми деталями, например, обращением с глобальными и локальными переменными, а также работой с памятью. Фактически, они создали не полный аналог S-PLUS, а новую «ветку» на «дереве S». Многие вещи, которые отличают R от S-PLUS, связаны с влиянием языка Scheme [функциональный язык программирования, один из наиболее популярных диалектов языка Lisp, – прим. авт.].

Сначала проект развивался довольно медленно, но когда в нём появилось достаточно возможностей, в том числе уникальная по лёгкости система написания дополнений или пакетов, всё большее количество людей стало переходить с S-PLUS на R. Когда же, наконец, были устранены свойственные первым версиям проблемы с памятью, то среди пользователей R стали появляться и любители других статистических пакетов (прежде всего тех, которые имеют интерфейс командной строки: SAS, Stata, SYSTAT). Количество книг, написанных про R, за последние годы выросло в несколько раз, а количество пакетов уже приближается к полутора тысячам.

Идея центральной системы хранения и распространения пакетов, CRAN или Comprehensive R Archive Network (http://cran.r-project.org/), была заимствована из TeX-сообщества (CTAN или Comprehensive TeX Archive Network; аналогичной схемой пользуется и Perl-сообщество: CPAN или Comprehensive Perl Archive Network). Все три упомянутых проекта объединяет одно: стабильная база и множество дополнений. В отличие от добавления новой функциональности в монолитную программу, качественный пакет может сравнительно легко написать один человек за вполне обозримый промежуток времени.

Как скачать и установить R

Поскольку R – свободное ПО, его можно скачать и установить совершенно бесплатно. Конкретный способ, конечно, будет зависеть от установленной у вас ОС. Как уже говорилось выше, R входит в репозитории большинства распространенных дистрибутивов Linux, единственное, что нужно учесть – обновление пакетов часто отстает от выхода официальных версий (релиз-цикл R длится примерно три месяца, на момент написания статьи актуальной была версия 2.6.0). Версия R нумеруется тремя числами: первые два – это главная версия, которая обновляется два раза в год. С каждой главной версией в R привносятся изменения, причём часто – довольно значительные. Как правило, это множество новых команд, улучшенные алгоритмы выполнения старых, и, разумеется, исправления ошибок. К недостаткам смены версии можно отнести возможные проблемы с обратной совместимостью. Естественно, разработчики стараются свести такие изменения к минимуму. С другой стороны, написанные на R программы пяти-семилетней давности, как правило, работают без проблем. В общем и целом, мораль такова: обновляйте R смело, но при этом всегда читайте список изменений.

На каждую главную версию выходит, как правило, две минорных (нулевая и первая). Первая минорная версия обычно ничего нового, кроме исправления ошибок, не привносит. Таким образом, если Вы хотите всегда иметь самую свежую версию, то репозиторий пакетов, особенно в случае стабильных дистрибутивов, не годится. В этом случае надо будет скачивать R из CRAN (http://cran.r-project.org/). У этого сайта довольно много зеркал, так что можно выбрать подходящее.

Процедура компиляции R из исходного кода вполне стандартная: ./configure, make и make install от имени суперпользователя. В общем, если процесс компиляции как таковой вас не пугает, собрать R из исходных текстов не составит труда.

Есть одна, важная для всех операционных систем особенность: R (в отличие от того же S-PLUS) держит все свои вычисления в оперативной памяти, поэтому, если в процессе работы, скажем, выключится электропитание, то результаты сессии, не записанные явным обра зом в файл, пропадут. Эта особенность, к сожалению, не позволяет R работать с действительно большими объёмами данных (порядка сотен тысяч и более записей), отдавая их на откуп гораздо менее удобной системе анализа ROOT (http://root.cern.ch), про которую мы уже говорили в LXF83.

Запуск

Опять-таки, каждая операционная система имеет свои особенности работы. Но, в целом, можно сказать, что и в Linux, и в Mac OS X, и в Windows существует так называемый «терминальный» способ запуска (для Mac и Windows имеется и штатный GUI с некоторыми дополнительными возможностями).

Терминальный способ прост: достаточно набрать в командной строке:

 => R
 R version 2.4.0 Patched (2006-11-25 r39997)
 Copyright (C) 2006 The R Foundation for Statistical Computing
 ISBN 3-900051-07-0
R -- это свободное ПО, и оно поставляется безо всяких
гарантий. Вы вольны распространять его при соблюдении
некоторых условий. Введите ‘license()’ для получения
более подробной информации.
R -- это проект, в котором сотрудничает множество
разработчиков. Введите ‘contributors()’ для получения
дополнительной информации и ‘citation()’ для ознакомления
с правилами упоминания R и его пакетов в публикациях.
Введите ‘demo()’ для запуска демонстрационных программ,

‘help()’ -- для получения справки, ‘help.start()’ --

для доступа к справке через браузер. Введите ‘q()’, чтобы
выйти из R.
>

и появится приглашение в виде символа >. Теперь можно приступать к работе.

Если терминал запущен вне графической среды, то все изображения будут скидываться в один многостраничный PostScript-файл – Rplots.ps. В Mac OS X это будет происходить, даже если X11 запущен, так что полноценно использовать R под Mac можно только в GUI-варианте. Терминальный запуск под Windows таких ограничений не имеет.

На будущее договоримся, что под «сессией R» мы будем иметь в виду терминальный запуск под X11 в GNU/Linux и GUI-запуск в Windows и Mac. GUI под эти операционные системы построены так, что они всё равно запускают терминал-подобное окно. Общение с R возможно только в режиме диалога «команда-ответ». Полноценного GUI с R не поставляется: хотя предпринимаются многочисленные попытки создать такую систему, но пока что все они далеки от завершения. Возможно, это и к лучшему, так как система из меню-окошек-опций не способна заменить полноценный интерфейс командной строки, особенно в случае таких сложных систем, как R. Интересно, что S-PLUS имеет очень приличный GUI, но если открыть любой учебник по этой системе, то можно заметить, что автор настоятельно рекомендует пользоваться командной строкой.

Первые шаги

Перед тем как начать работать, надо понять, как выйти. Для этого достаточно ввести одну команду и ответить на один вопрос:

> q()
> Save workspace image? [y/n/c]: n
   Уже такой простой пример демонстрирует, что любая команда

в R – это функция, которой можно передать аргумент. Даже если аргумент не указан, то скобки всё равно надо ввести. Если этого не сделать, то вместо выхода из R на экран будет выведено определение функции:

>q
function (save = “default”, status = 0, runLast = TRUE)

.Internal(quit(save, status, runLast))

<environment: namespace:base>

Чтобы узнать, как правильно вызывать функцию, следует воспользоваться встроенной справкой. Есть два пути. Первый – вызвать команду справки:

> help(q)

или

> ?q

Текст справки будет выведен в основном окне программы. Если внимательно прочитать его, то станет ясно, что выйти из R можно, и не отвечая на дополнительный вопрос, если ввести:

> q(“no”)

Зачем же нужен этот вопрос? Или, другими словами, что будет, если ответить положительно? В этом случае в рабочую папку R (ту, из которой он вызван), запишутся два файла: бинарный .RData и текстовый .Rhistory. Первый содержит все объекты, созданные за время сессии. Второй – полную историю введённых команд. R работает с историей команд стандартным образом: доступ к предыдущей команде осуществляется через клавишу-стрелку «вверх».

Если при выходе сохранить файл .Rhistory, то команды из этой сессии будут доступны и в следующей, при условии, что R будет вызван из того же самого каталога. И наоборот, если случайно сохранить рабочую среду (эти два файла), то при следующем старте они загрузятся автоматически. Иногда такое поведение R становится причиной различных недоумений, так что необходимо быть внимательным.

Итак, как войти и как выйти, уже понятно. Осталось сказать ещё немного про помощь. Её можно вызвать несколькими различными способами. Во-первых, посредством команд ? или help(), как описано выше. Во-вторых, можно вызвать команду help.start(). В этом случае откроется окно браузера, в котором будет демонстрироваться так называемая HTML-помощь. Основное её преимущество перед обычной текстовой в том, что разделы соединены гиперссылками (в Mac OS X такая помощь вызывается обычными командами). В-третьих, вместе с R устанавливается несколько руководств в формате PDF. Их можно найти в папке, содержащей документацию.

Наконец, часто бывает нужна «обратная» помощь – вы знаете, что вы хотите, но не знаете, как это сделать (какую команду вызвать). В этом случае могут помочь две команды: help.search() и apropos(). Вот как их надо вызывать:

> help.search(“vector”)
Персональные инструменты
купить
подписаться
Яндекс.Метрика