понедельник, 15 декабря 2014 г.

Работа с R онлайн (без установки)

Кроме работы с R на локальном компе, простые исследования можно проводить и в браузере, с помощью интерфейса, предоставляемого сайтом R-Fiddle (fiddle по-англ. скрипка), см. рисунок:
Интерфейс состоит из двух панелей: внизу находится панель, аналогичная панели консоли, а вверху панель, аналогичная панели редактора кода в RStudio.

Верхняя панель работает в режиме редактора. В правом углу верхней панели находятся две кнопки Graphs (графики) и Run Code (запустить код). По кнопке Graphs в правом верхнем углу открывается окошко, куда будут выводиться графики. Чтобы вывести график нужно дать соответствующую команду, например, вызвать функцию plot (как работать с графикой в R мы рассмотрим позже). По кнопке Run Code запускается код, которые был введён в верхней панели.

В нижней панели можно давать команды и тут же получать результат, т.е. работать в интерактивном режиме, подобно тому как это делается в RStudio.

суббота, 20 сентября 2014 г.

О самоучителе "Система программирования R"

О самоучителе

Этот самоучитель для тех, кто хочет научиться решать свои задачи, используя для этого компьютер, а конкретно систему программирования R.

Система программирования R это язык программирования R плюс набор программ с помощью которых мы будем писать код и проводить исследования. Однако система не ограничивается этим - система это ещё и соответствующее знание, приобрести которое, можно, проработав самоучитель.

Самоучитель рекомендуется читать с начала, последовательно, пост за постом, пробовать приведённые в постах примеры, на своей машине, изменять их, писать свой код, тогда вы сможете понять о чём идёт речь ;)

Посты самоучителя это не пересказ доступных источников и не попытка описать все возможности системы программирования R, а попытка передать саму суть, главный смысл, лежащий в основе. Поняв основу, можно будет легко разобраться в деталях уже самому, так как появятся базовые знания.

Одна из целей самоучителя дать всю информацию в максимально полезной для практики форме, т.е. нацеленность на практику. Отличие практика от теоретика можно увидеть на следующем рисунке:

Авторские права

Весь текст учебника является собственностью автора. Он защищён лицензией Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Понятным языком условия этой лицензии описаны на английском здесь.

Некоторые картинки (рисунки) были созданы автором самоучителя, некоторые брались из разных источников. В большинстве случаев автора картинки, установить не удавалось, так как картинки, размещённые на одном сайте, репостятся на других сайтах. Если вы являетесь автором, просьба об этом написать в комментариях к соответствующему посту.

Creative Commons License
Учебник по R is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License

вторник, 5 августа 2014 г.

Работа с пакетами

Установка и подключение пакета для использования

Чтобы начать пользоваться пакетом нужно выполнить два шага:
  1. Установить пакет с помощью функции install.packages
  2. Подключить пакет с помощью функции library
Рассмотрим как это делается на примере пакета ggplot2, который предоставляет функции для работы c графиками.

Шаг 1. Установка пакета

При установке пакета, система вначале скачивает пакет, потом устанавливает. Установим пакет ggplot2:
install.packages("ggplot2")
После запуска этой команды система установит не только ggplot2, но и все пакеты от которых он зависит.

Шаг 2. Подключение пакета

Мы узнали как скачать пакет, но как теперь его подключить, ведь без этого не будет возможным воспользоваться ни одной функцией пакета? Это можно сделать с помощью функции library:
library(имя_пакета)
Пример подключения пакета ggplot и использования его функции qplot:
> library(ggplot2)
# Убедимся, что теперь мы можем вызывать функции пакета
> qplot(carat, price, data = diamonds)

Установка пакета с определённого репозитория

Иногда бывает нужно установить пакет с определённого репозитория. Это можно сделать с помощью всё той же функции - install.packages, только вторым аргументом нужно передать адрес (URI) репозитория:
install.packages(name, repos = uri)
Пример:
install.packages("rattle", repos = "http://rattle.togaware.com")

Получение списка функций пакета

После подключения пакета с помощью функции library, становятся доступными все функции, пакетом предоставляемые. Получить список функций по пакету можно так:
ls(paste0("package:", "имя_пакета"), all.names = TRUE)
ещё один способ:
library(help = "имя_пакета")

Получение справки, которая идёт с пакетом

Мы упоминали, что пакет может идти с сопроводительной документацией (справкой), получить её можно так:
help(package = "имя_пакета")

Удаление пакета

Удалить пакет можно так:
remove.packages("имя_пакета")

Получение списка пакетов

Каждый из пакетов может быть:
  1. не установлен - пакет не был установлен с помощью функции install.packages (об этой функции ниже). Получить список таких пакетов можно следующей командой:
    setdiff(row.names(available.packages()), .packages(all.available = TRUE))
    
  2. установлен, но не подключён - пакет был установлен с помощью функции install.packages, но не подключён с помощью функции library (об этой функции ниже). Получить список таких пакетов можно следующей командой:
    setdiff(.packages(all.available = TRUE), (.packages()))
    
  3. установлен и подключён - пакет был установлен с помощью функции install.packages и подключён с помощью функции library. Получить список таких пакетов можно следующей командой:
    (.packages())
    
На следующем рисунке, с помощью кругов Эйлера, показаны отношения между множествами пакетов:

Обновление всех пакетов

С течением времени авторы выкладывают в репозиторий новые версии пакетов. Таким образом получается, что текущие пакеты с течением времени могут устаревать. Обновить все устаревшие пакеты, для которых есть более свежие версии можно так:
update.packages()

Перед обновлением можно проверить, для каких пакетов доступны обновления:
old.packages()

Обновление одного пакета

???

Получение зависимостей пакета

Зависимости пакета можно узнать так:
  1. Зайти на страницу со списком пакетов, отсортированных по имени.
  2. Нажать в браузере Ctrl+F и найти пакет по имени (в данном случае ggplot2).
  3. Перейти по ссылке на страницу проекта и найти с помощью Ctrl+F напротив слова Depends зависимые пакеты, см. рис.:
Можно сделать тоже самое программно:
available.packages()["ggplot2", "Depends"]
[1] "R (>= 2.14), stats, methods"
И тот и другой вариант поиска зависимостей не даёт полный список зависимостей - для каждого пакета от которого зависит текущий нужно искать зависимости.

Поиск пакета

На сайте CRAN можно найти страницу с классификацией пакетов по задачам - CRAN Task Views.