THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

R - популярный язык программирования с открытым исходным кодом, который специализируется на статистических расчетах и графиках. Он широко используется статистиками для разработки статистического программного обеспечения и проведения анализа данных. Одной из сильных сторон R есть его расширяемость. Пользователи могут создавать и публиковать собственные пакеты. R Сообщество очень активно, постоянно добавляются пользовательские статистические пакеты для специфических областей науки. Что делает R применимым во многих сферах.

CRAN (Comprehensive R Archive Network) - это набор сайтов (зеркал) на которых размещены множество пакетов, и сами дистрибутивы R. Вы можете скачать R с любого из них но мы будем использовать RStudio.

В этом руководстве вы узнаете как установить и настроить R в Ubuntu 14.04. Большинство инструкций подойдут и для других операционных систем, нужно будет изменить лишь несколько команд. На все про все у вас должно уйти не больше 10-15 минут.

Конечно же нам потребуется Ubuntu 14.04 так как именно на нее рассчитана статья и 1 Гигабайт оперативной памяти в системе. Если памяти недостаточно, необходимо подключить раздел подкачки.

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

Подготовка системы

Для установки R мы будем использовать APT (Advanced Packaging Tool). Для хранения списка источников откуда будут загружены пакеты он использует специальный файл. Это /etc/apt/sources.list. Если мы хотим получить самую свежую версию R то нужно добавить правильный репозиторий в список источников. Для этого добавим следующую строку в /etc/apt/sources.list, в Ubuntu 14.04 она будет выглядеть вот так, но для других версий будет отличаться:

sudo sh -c ‘echo «deb http://cran.rstudio.com/bin/linux/ubuntu trusty/» >> /etc/apt/sources.list’

Репозиторий для своей версии ОС можно узнать там

Для установки пакетов из этого репозитория в APT нам нужно добавить его публичный ключ. В Ubuntu CRAN подписан ключом с ID E084DAB9. Добавляем его в систему:

gpg -keyserver keyserver.ubuntu.com -recv-key E084DAB9

А затем в apt:

gpg -a -export E084DAB9 | sudo apt-key add -

Установка R

Теперь когда APT настроен правильно мы можем переходить к установке.

Сначала нужно обновить список доступных пакетов, так как мы изменили источники:

sudo apt-get update

Теперь можем устанавливать R. Флаг y, автоматически подтверждает установку программы:

sudo apt-get -y install r-base

Теперь у вас в системе установлена самая последняя версия R. Можете протестировать ее выполнив:

Вы увидите что то на подобие этого:

R version 3.2.1 (2015-06-18) - «World-Famous Astronaut»
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type ‘license()’ or ‘licence()’ for distribution details.

Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type ‘contributors()’ for more information and
‘citation()’ on how to cite R or R packages in publications.

Type ‘demo()’ for some demos, ‘help()’ for on-line help, or
‘help.start()’ for an HTML browser interface to help.
Type ‘q()’ to quit R.

Сейчас вы в интерактивной консоли R и можете выполнять любые R команды. Для выхода используйте функцию:

> q(save = «no»)

Установка пакетов R из CRAN

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

Как упоминалось ранее в CRAN размещен не только сам R но и многие дополнительные пакеты. Для установки или обновления пакетов из CRAN необходимо использовать R функцию install.packages(). Например если вы хотите установить пакет package используйте следующую команду:

> install.packages(«package»)

Стоит заметить что пакет будет установлен только для текущего пользователя и другим будет недоступен.

Можно установить пакет R и для всех пользователей, для этого нужно использовать права суперпользователя. В качестве примера давайте установим пакет shiny который очень популярен среди разработчиков web приложений на R. Один из способов установки пакета от суперпользователя - войти как суперпользователь, запустить R и вызвать функцию install.packages (). Но этого делать не рекомендуется. Мы можем просто запустить R команду с помощью sudo. Параметр repo указывает с какого репозитория будет загружен пакет.

sudo su - -c «R -e \»install.packages(‘shiny’, repos = ‘http://cran.rstudio.com/’)\»»

Теперь пакет будет доступен для всех пользователей. Давайте проверим. Запустите R:

Загрузите пакет:

> library(shiny)

Как видите команда не вызвала ошибок. Теперь закройте R:

> q(save = «no»)

Установка пакета DevTools

Пакеты размещенные в CRAN могут быть установлены функцией install.packages() но есть еще много пакетов размещенных на GItHub. Для установки пакетов R из Github нужно использовать пакет DevTools. Давайте его установим. Для работы пакет требует три библиотеки libcurl4-gnutils-dev, libxml2-dev , и libssl-devc установите их:

sudo apt-get -y install libcurl4-gnutls-dev libxml2-dev libssl-dev

Теперь можно устанавливать devtools. Не забудьте что его нужно установить для всех пользователей как описано выше.

sudo su - -c «R -e \»install.packages(‘devtools’, repos=’http://cran.rstudio.com/’)\»»

Установка devtools займет несколько минут.

Установка пакетов R из GitHub

Теперь когда DevTools установлен, мы можем установить любой пакет из GitHub используя функцию install_github(). Также как и в установке из CRAN вы должны выполнять команду от суперпользователя для установки пактов для всех пользователей. Давайте попробуем установить shinyjs из GitHub который добавляет функциональность к пакету shiny. Пакет в GitHub определяется его автором и названием:

sudo su - -c «R -e \»devtools::install_github(‘daattali/shinyjs’)\»»

Давайте проверим корректность установки shinyjs загрузив его. Запустите R:

Попробуйте загрузить shinyjs:

> library (shinyjs)

вы уже знаете как закрыть интерпретатор R:

> q(save = «no»)

Следующие шаги

Теперь у вас в системе установлен и настроен полностью рабочий интерпретатор языка R. Для получения более подробной информации можете посетить

Чтобы создать переменную (например, х) и присвоить ей значение (например, 1234) нужно просто ввести команду х=1234 . Теперь в любых выражениях имя переменной (в нашем случае х) будет автоматически заменено значением (у нас это 1234).

Чтобы узнать значение переменной, достаточно ввести название переменной, и R выдаст ее значение. Выглядеть это будет так:
> x=1234
> х
1234

Присваивая переменной новое значение, можно использовать старое значение, то есть создавать конструкции типа
> a=5
> a
5
> a=a+3
> a
8

Важно знать, что имена переменных могут состоять из латинских букв обоих регистров, из цифр и знаков подчеркивания (например, допустимы такие имена: a, x, x1, a_x, O_o, the_Variable_with_Long_Name, a459x4h36J4lbgT62). При этом первым символом должна обязательно являться буква! Наконец, регистр имеет значение, то есть RainForest и RainFOrest - это разные переменные.

Векторы, или как работать с рядами данных?

Что такое векторы в R?

Допустим, у нас есть группа из 5 человек, и нам надо сохранить их возраста. Можно создать пять переменных, например
> age_1=25
> age_2=20
> age_3=9
> age_4=44
> age_5=37
Однако удобнее создать одну переменную, в которую поместить все 5 значений. Такой ряд данных, объединенных одним именем, хранящийся в определенном порядке - это массив данных, или вектор.

Assign("age",c(25,20,9,44,37))
или сокращенно: age

Теперь, каждый отдельный элемент можно вызвать по его порядковому номеру в ряду, например, четвертый элемент можно получить так:
> age
44
С такими отдельными элементами можно производить все те же операции, что и с обычными числами

Функция append, или как добавить элементы в существующий вектор?

Допустим, в нашей группе появился еще один человек, возраст которого 31 год. Мы можем создать заново вектор age, но теперь из шести элементов вместо пяти. Однако есть другой способ - использовать функцию append:
> append(age,31)
25 20 9 44 37 31
Замечу, что мы могли бы вставить несколько значений, вспомнив про функцию c():
> append(age,c(31,33,35))
25 20 9 44 37 31 33 35

Также функция позволяет вставить элементы в любом месте вектора с помощью параметра after. По умолчанию установлено значение after=length(x), то есть элементы добавляются в конец. Но допустим, мы захотим вставить нашего шестого человека после второго:
> append(age, 31, after=2)
25 20 31 9 44 37

Операции с векторами, или что можно делать с векторами?

Можно оперировать всеми элементами вектора одновременно. Так прибавление числа к вектору равносильно прибавление этого числа к каждому элементу вектора. Или, например, чтобы вывести, сколько десяктов лет прожил каждый человек из нашего примера, можно сделать так:
> age/10
2.5 2.0 0.9 4.4 3.7

Аналогично со сложением, вычитанием и другими операциями, описанными в пункте про

Как сравнивать векторы, элементы векторов?

Допустим, нужно выяснить, какие элементы вектора (пусть будет тот же age) больше определенного числа (например, кто из нашей маленькой выборки совершеннолетний). R для каждого элемента скажет, выполняется ли условие, то есть TRUE (верно) или FALSE (не верно) Выглядеть будет примерно так:
>age
25 20 31 9 44 37
> age >= 18
TRUE TRUE FALSE TRUE TRUE

Но может понадобиться получить один ответ, например, верно ли, что все элементы соответствуют условию? или есть ли вообще элементы, соответствующие условию? Для этого используем две функции, соответственно, all() и any()

all(x1,x2,...,xn) - ответит на вопрос, верно ли, что все условия (x1, x2, ... и xn) верны? то есть это логическая конъюнкция. Например:
> all (age >= 7, age TRUE
# действительно, все испытуемые не младше семи и младше шестидесяти
> all (age >=18, 1 > 0)
FALSE
# хотя единица, конечно, больше нуля, но среди наших испытуемых есть один девятилетний, поэтому не верно

any(x1,x2,...,xn) - ответит на вопрос, есть ли среди условий (x1, x2, ..., xn) хоть одно верное? то есть это логическая дизъюнкция. Пример:
> any (age >=18, 1 > 0)
TRUE

Наконец, можно сравнивать между собой два вектора. Но для этого нужно либо чтобы длина большего была кратна длине меньшего либо чтобы длины были равны. Примеры:
> a > a > b
FALSE FALSE FALSE TRUE TRUE

Как задать последовательность чисел?

  • оператор:
  • seq(from,to,by,length,along) - создает последовательность, начиная с from, заканчивая to с шагом by. Можно задать длину ряда параметром length или приравнять по длине к другому вектору along . Аргументы: from, to, by, length, along (такой же длины как...)
  • rep(a, times, each) - повторять вектор a times раз или each раз каждый элемент a. Аргументы: вектор, times, each

Сортировка

  • sort(v,increasing) - сортирует вектор v; increasing - булев, true - по возрастанию, false - по убыванию, можно вместо этого написать increasing=decreasing;
  • order()

Вы можете использовать system() и Rscript для запуска сценария как асинхронного фонового процесса:

system ("Rscript -e "source(\"your-script.R\")"" , wait = FALSE ) ... save.image ("script-output.RData" ) cat ("Script completed\n\n" )

Надеюсь это поможет!

Я хочу выполнить R-сценарий в фоновом режиме с консоли R.

С консоли я обычно запускаю R-скрипт как источник ("~ / .active-rstudio-document). Мне нужно подождать, пока скрипт не будет завершен, чтобы продолжить работу. Вместо этого я хочу, чтобы R работал в фоновом режиме, пока я могу продолжить работу в консоли. Также я должен быть как-то уведомлен, когда R завершает команду источника. Возможно ли это в R?

Это может быть весьма полезно, поскольку мы часто видим, что работа занимает много времени.

PS - Я хочу, чтобы исходный скрипт работал в том же пространстве памяти, а не в новом. Поэтому решения, такие как fork, system и т. Д., Не будут работать для меня. Я вижу, могу ли я запустить R-скрипт как отдельный поток, а не отдельный процесс.



THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама