- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF111:R
Материал из Linuxformat.
- R Свободный инструментарий для статистической обработки данных
Содержание |
Графические интерфейсы
R |
---|
R на примере |
---|
- ЧАСТЬ 3 Работа в R ориентирована на консоль, но и мышь иногда тоже хочется чем-нибудь занять. Антон Коробейников и Евгений Балдин изучают графических помощников в тяжёлом деле анализа данных.
Прежде чем начать повествование, хотелось бы сказать пару слов в пользу консольного интерфейса. Анализ данных – это творческий процесс, и ничто не продвигает его лучше, чем неспешный ввод с клавиатуры. Естественно, этому занятию должен предшествовать интервал времени, целиком и полностью посвящённый чтению документации, книг и статей по тематике проблемы. Менюшки и кнопочки отвлекают, создавая иллюзию простоты творческого процесса, требуя нажать их немедленно и посмотреть, что получится. Как правило, не получается ничего, т.е. всё равно приходится брать в руки книгу и думать.
Консольный интерфейс в R идеален. Он предоставляет пользователю историю команд и дополнение по Tab, сохраняет информацию и объекты между сессиями (если пользователь этого захочет, естественно). Нужно поработать на удалённом компьютере? С консолью нет никаких проблем. А если воспользоваться программой screen, то можно не бояться «разорванных» сессий и случайно закрытых терминалов.
Вы всё ещё хотите использовать GUI при анализе данных? Ну что же, дело ваше, но помните, что мы вас предупреждали.
R Сommander
R Сommander или Rcmdr – кросс-платформенный графический интерфейс к R, написанный на Tcl/Tk. Его домашнюю страницу можно найти по адресу http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/.
Автор R Commander Джон Фокс [John Fox] признаётся, что в случае программ для статистического анализа он не является фанатом интерфейса, состоящего из меню и диалогов. С его точки зрения, R Commander полезен в основном для образовательных целей при введении в R, а также в отдельных, очень редких случаях – для быстрого анализа. Одной из основополагающих целей, преследуемых при создания интерфейса R Commander, был мягкий перевод пользователя в консоль, где можно автоматизировать свои действия более глобально.
Пакет распространяется под лицензией GNU/GPL, и поэтому доступен во всех стандартных дистрибутивах Linux. Например, для установки в Ubuntu 8.04 достаточно выполнить команду:
% sudo aptitude install r-cran-rcmdr
Пакет присутствует также и на CRAN, поэтому его установку можно произвести и силами R:
> install.packages("Rcmdr", dependencies=TRUE)
Обратите внимание на значение опции dependencies: R Commander зависит от довольно большого числа пакетов. Кроме стандартных библиотек r-base, он предполагает, что в системе уже установлены пакеты abind, aplpack, car, effects, lmtest, multcomp, relimp, rgl и (только для Windows) RODBC, поэтому до инсталляции самой программы необходимо убедиться, что все они действительно присутствуют. Установка R Commander с помощью aptitude/apt-get, как и добавление dependencies=TRUE, позволяет не беспокоиться об этих проблемах. Все необходимые пакеты будут скачаны и установлены в нужном порядке.
После установки, для запуска R Commander в сессии R следует выполнить команду:
> library(Rcmdr)
При запуске R Commander открывается снабжённое довольно «развесистым» меню окно, разделённое на Окно Скриптов [Script Window], Окно Вывода [Output Window], а также информационное окно Сообщения [Messages]. Многие действия в R Commander можно выполнять через меню, которое достаточно легко настраивается, например, с помощью редактирования текстового файла Rcmdr-menus.txt. Также можно вводить команды в Окне Скриптов, то есть консоль никуда не делась. При создании графиков они появляются в отдельных окнах, как и в случае R.
R Commander имеет русскую локализацию, которая активизируется автоматически, если выставлена русская локаль:
% locale LANG=ru_RU.UTF-8
Основная проблема русской локализации – это кириллические шрифты, которые выбраны по умолчанию. Поэтому, если вы предпочитаете локализованный интерфейс, то перед загрузкой R Commander ему, с помощью команды options, следует передать примерно следующее:
> options(Rcmdr=list( + default.font="-rfx-fixed-medium-r-normal-*-20*", + suppress.X11.warnings=TRUE))
Растровый шрифт семейства rfx от Дмитрия Болховитянова (20 в конце строки – это размер по умолчанию), установленный в качестве default.font, идёт в составе пакета xfonts-bolkhov. Вторая опция, suppress.X11.warnings, подавляет надоедливые сообщения при создании новых графических окон.
Выйти из R Commander можно через меню Файл > Выйти, при этом можно одновременно закрыть и сессию R. Если же сессия R осталась открытой, то повторный запуск R Commander выполняется с помощью команды:
> Commander()
Для вводного ознакомления с возможностями R Commander следует прочитать текст Getting-Started-with-the-Rcmdr.pdf, получить доступ к которому можно через меню Помощь > Введение в R Commander.
Если по какой-то причине было принято решение анализировать данные исключительно с помощью R Commander, то можно сделать так, чтобы при запуске R эта графическая оболочка загружалась автоматически. Для этого в файл пользовательских настроек ~/.Rprofile достаточно добавить следующие строки:
old <- getOption("defaultPackages"); options(defaultPackages = c(old, "Rcmdr"));
Глобальная переменная defaultPackages содержит информацию о модулях, автоматически загружаемых при старте R.
RKWard
RKWard (http://rkward.sourceforge.net) – это довольно удобный KDE3/4-интерфейс к языку программирования R. Разработчики RKWard старались совместить мощь R с простотой использования, подобной предоставляемой коммерческими статистическими пакетами (такими как SPSS или Statistica).
Стоит отметить, что это им вполне удалось. Для начинающих пользователей RKWard предоставляет широкие возможности по выбору многих стандартных процедур статистического анализа по принципу «выдели и щелкни»: достаточно активировать соответствующий пункт меню.
Для продвинутого пользователя RKWard предлагает достаточно удобный редактор кода с подсветкой, автоматической расстановкой отступов, автодополнением – теми вещами, без которых в настоящее время не обходится ни одна среда программирования. Привычная консоль R также наличествует, она доступна в любое время на вкладке R Console.
Авторы RKWard взяли курс на как можно более полную интеграцию функций R в графическую среду: присутствует браузер текущего окружения (environment), редактор данных. Есть менеджер пакетов, умеющий не только устанавливать их, но и следить за обновлениями; обеспечивается прозрачная интеграция со справочной системой. Кроме того, RKWard умеет «перехватывать» создание графических окон и добавлять к ним очень удобные функции типа сохранения содержимого в файл одного из стандартных форматов, поддерживаемых R (PDF, EPS, JPEG, PNG).
Интерфейс RKWard чрезвычайно гибок: пользователь может расширять его за счёт написания собственных модулей (кстати, все встроенные средства анализа, доступные сразу же после запуска из меню – это такие же модули, но только созданные авторами RKWard).
JGR
Предпочитаете, чтобы интерфейс отрисовывался средствами Java? Тогда JGR (Java GUI для R) – это то, что вы искали. JGR (произносится как «ягуар») был впервые представлен публике в 2004 году, но развивается и поддерживается до сих пор. Пакет JGR распростра- няется под лицензией GPL2, и его домашняя страница доступна по адресу http://jgr.markushelbig.org/JGR.html.
JGR создавался для Mac «со всеми вытекающими», но под Linux он тоже работает. Для использования JGR необходимо инсталлировать Sun Java Development Kit (JDK).
> apt-get install sun-java6-jdk > sudo update-java-alternatives -s java-6-sun > sudo R CMD javareconf
После установки и настройки Java-окружения следует запустить сессию R и выполнить следующие действия:
> install.packages('JGR') > library(JGR) > JGR() Starting JGR run script. This can be done from the shell as well, just run /home/user/R/i486/2.6/JGR/scripts/run
Готово – JGR запущен. Как гласит сообщение, то же самое можно проделать из консоли, набрав путь до специального скрипта. В приведённом выше примере это /home/user/R/i486/2.6/JGR/scripts/run.
В JGR есть встроенный текстовый редактор, который, конечно, не является полноценной заменой Emacs/VIM, но в нём есть подсветка синтаксиса и Tab-завершение команд. В JGR встроена гипертекстовая помощь, простенькая электронная таблица, добавлена возможность управлять объектами, в том числе и с помощью мыши, а также есть графический интерфейс для установки и загрузки R-пакетов. С учётом того, что этот GUI может работать везде, где есть Java, на него стоит обратить внимание.
SciViews-K
В мире универсальных редакторов и IDE достаточно известна платформа разработки Komodo от ActiveState. Она зарекомендовала себя как удобная среда для языков с динамической типизацией: PHP, Python, Perl, Ruby. SciViews-K (http://www.sciviews.org/SciViews-K) – молодой и динамично развивающийся проект (первый релиз состоялся в июне 2008 года), добавляющий поддержку R к свободному (MPL/GLP/LGPL) редактору Komodo Edit.
На настоящий момент возможности SciViews-K довольно скромны: более чем обычный редактор кода с подсветкой, интеграция с командной строкой R и системой справки. Кроме того, доступен просмотр текущего окружения и редактор наборов данных.
Поскольку SciViews-K является расширением для редактора Komodo Edit, то его установка производится в два приема: сперва необходимо инсталлировать сам Komodo Edit, а потом уже добавить SciViews-K. Кроме того, при первом запуске R из-под SciViews-K будет установлен пакет SciViews вместе с зависимостями.
Rattle
Rattle (http://rattle.togaware.com) – сокращение, обозначающее «the R Analytical Tool To Learn Easily» [Легкая в освоении среда анализа R]. Программа активно развивается и, по уверениям разработчиков, предназначена для интеллектуального анализа данных (data mining), иными словами, для выявления скрытых закономерностей или взаимосвязей между переменными в больших массивах необработанных данных. Rattle – это среда для «разглядывания» данных человеком, и программа всячески помогает ему в этом деле. Альтернативное название пакета: «A GNOME Data Miner Built on R» намекает, что этот пакет интегрирован в графическую среду GNOME.
Для установки Rattle необходимо наличие пакетов r-base-core, ggobi (визуализация данных) и libglade2-dev:
> apt-get install r-base-core ggobi libglade2-dev
После этого в консоли R следует выполнить команду:
> install.packages("rattle", dependencies=TRUE)
и откинуться на спинку кресла. Из-за большого количества зависимостей установка занимает много времени.
Запуск GUI производится как обычно:
> library(rattle) > rattle()
Простой интерфейс позволяет использовать Rattle для обучения основам анализа.
Второй эшелон
PMG
Нужен графический интерфейс, но нет особого желания разбираться в «навороченных» GUI? Тогда, возможно, имеет смысл обратить внима- ние на пакет PMG – Poor Man’s GUI (http://wiener.math.csi.cuny.edu/pmg).
Хотя у пакета есть множество зависимостей, установка проста и проводится силами R. PMG является кроссплатформенным ПО: для отрисовки графического интерфейса применяется библиотека GTK в форме Rgtk2. Последний, в свою очередь, можно использовать для создания собственного GUI.
> install.packages("pmg", dep=TRUE) > library(pmg)
Этому графическому интерфейсу определённо есть куда развиваться.
RPMG
Что делать, если нет необходимости в сложной переливающейся графике, а нужны пара простейших интерактивных кнопочек на картинке и минимальное число зависимостей от других пакетов? В этом случае поможет RPMG – GUI для действительно бедных (Really Poor Man’s GUI): с его помощью легко можно организовать интерактивное графическое R-окно для личного пользования. Для установки пакета и демонстрации его возможностей следует выполнить следующие команды:
> install.packages("RPMG", dep=TRUE) > library(RPMG) > demo(RPMG)
Пакет не имеет домашней страницы, но его всегда можно скачать со CRAN: http://probability.ca/cran/web/packages/RPMG/index.html.
RWeb
Допустим, вы не хотите давать в руки своим студентам ничего опаснее web-браузера. Странное желание, но и оно не помеха для преподавания статистики с использованием R. Простой набор Perl-скриптов Rweb (R Web Based Statistical Analysis), доступный на http://www.math.montana.edu/Rweb, можно использовать как отправную точку для реализации своего интерактивного web-проекта. На сайте проекта есть его рабочая демонстрация: команды R можно набирать прямо в окне браузера, здесь же появляются результаты. Проект давно не обновлялся, но его код вполне обозрим и его можно легко подстроить под свои нужды.
Gnumeric
Gnumeric (http://www.gnome.org/projects/gnumeric) – это популярный табличный процессор с открытым исходным кодом, иными словами – электронная таблица, со всеми преимуществами и недостатками данного типа программ. Gnumeric поддерживает систему подключаемых модулей, позволяющая расширять функциональность. В 2003 году сотрудник Bell Labs Дункан Лэнг [Duncan Temple Lang] написал дополнение, предоставляющее возможность вызвать из Gnumeric любую функцию R. Этот модуль был незатейливо назван RGnumeric, и его до сих пор можно найти по адресу http://www.omegahat.org/RGnumeric.
К сожалению, пакет для интеграции R с Gnumeric представляет из себя скорее демонстрацию возможностей, нежели законченный продукт. В рамках Google Summer of Code 2008 была попытка возродить заложенные в него идеи на новом уровне (http://www.r-project.org/SoC08/ideas.html), но похоже, проект всё ещё ждёт своего автора. В любом случае, исходники доступны и, хотя просто сама их сборка представляет из себя некоторое приключение, истинные энтузиасты не ищут лёгких путей.
Emacs
Что это мы всё о GUI да о GUI? Пора поговорить о Emacs. Да-да, про тот самый редактор, в который встроена программа управления кофеваркой. Говорят, она работает, причём очень неплохо. А что же R?
ESS (http://ess.r-project.org) – это специализированная интерактивная среда или мода для GNU Emacs/XEmacs. ESS является сокращением от фразы «Emacs Speaks Statistics», которую можно перевести как «Emacs говорит на языке статистики». Пакет ESS поддерживает не только систему статистического анализа R, но и другие диалекты языка S (S 3/4, S-PLUS 3/4/5/6/7), а так же SAS, XLispStat, Stata и BUGS. При установке в пакета ESS, например, так:
> sudo aptitude install ess
и добавлении строчки для инициализации ESS в '~/.emacs
(require 'ess-site)
редактору Emacs становятся доступны две дополнительные моды:
- Мода ESS, которая предназначена для редактирования исходных файлов с использованием команд R (включая дополнительную поддержку для редактирования Rnw-файлов), и
- Мода iESS – замена обычной R-консоли.
Интерпретатор R запускается, как это ни странно, с помощью команды R: Alt+x, а затем R и Enter. При старте спрашивается о местоположении рабочей директории для открываемой сессии R, а затем отображается стандартное R-приглашение. Можно параллельно запустить насколько сессий, а также задействовать удаленный компьютер (команда ess-remote). Работа в этой моде почти ничем не отличается от консоли, за исключением наличия стандартных возможностей редактирования текста в Emacs и дополнительного вспомогательного меню iESS. Из него можно получить доступ к таким интересным возможностям, как, например, редактирование объектов R (^c^d). Emacs – это прежде всего текстовый редактор, поэтому подобные особенности делают анализ данных комфортнее.
ESS-мода инициализируется автоматически при редактировании файлов с расширением R. Emacs предоставляет пользователю подсветку синтаксиса, выравнивание исходного кода по Tab, выполнение отдельных строк, фрагментов и всего файла в интерпретаторе R. Дополнительное меню ESS позволяет получить доступ ко всем этим возможностям. Редактирование RNW-файлов (смесь LaTeX- и R-команд для быстрого составления отчётов с помощью пакета Sweave – см. LXF102) чуть более мудрёное: мода ESS активируется только когда курсор оказывается внутри фрагментов с R-командами.
Если у вас есть навыки работы в Emacs, то ESS – это верный выбор.
И ещё...
R широко известен (хоть и в довольно узких кругах), поэтому почти все уважающие себя текстовые редакторы или среды разработки поддерживают его в той или иной степени. Кроме уже упомянутого Emacs, к ним относится и Vim, и jEdit, и Bluefish, и SciTE. Даже Eclipse имеет соответствующий модуль (http://www.walware.de/goto/statet). Сегодня мы говорили только о свободных пакетах, но, потрудившись, можно будет найти поддержку и в коммерческом секторе. LXF