R (язык программирования)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:21, 8 июня 2016.
R
64px
Парадигма мультипарадигмальный: массивный, объекто-оринентированное, императивное, функциональное,
Спроектировано Росс АйхэкаРоберт Джентлмен
Разработчики R Core Team[1]
Печать дисциплины динамическая
Лицензия GNU General Public License
Портал: www.r-project.org

R — язык программирования для статистической обработки данных и работы с графикой, но в тоже время это свободная программная среда с открытым исходным кодом, развиваемая в рамках проекта GNU. В любом дистрибутиве GNU/Linux, если его целью не является размещения всего дистрибутива на дискетке, можно найти эту среду 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, естественно, за плату, причём весьма и весьма немаленькую. Собственно говоря, именно высокая цена и сдерживала широкое распространение этого во многих отношениях замечательного продукта. Тут-то и начинается история R. В августе 1993 г. двое молодых новозеландских учёных анонсировали свою новую разработку, которую они назвали R. По замыслу создателей (Robert Gentleman и Ross Ihaka), это должна была быть новая реализация языка S, отличающаяся от S-PLUS некоторыми деталями, например, обращением с глобальными и локальными переменными, а также работой с памятью. Фактически, они создали не полный аналог S-PLUS, а новую «ветку» на «дереве S». Многие вещи, которые отличают R от S-PLUS, связаны с влиянием языка Scheme3. Сначала проект развивался довольно медленно, но когда в нём появилось достаточно возможностей, в том числе уникальная по лёгкости система написания дополнений или пакетов, всё большее количество людей стало переходить с SPLUS на R. Когда же, наконец, были устранены свойственные первым версиям проблемы с памятью, то среди пользователей R стали появляться и «любители» других статистических пакетов (прежде всего тех, которые имеют интерфейс командной строки: SAS, Stata, SYSTAT). Количество книг, написанных про R, за последние годы выросло в несколько раз, а количество пакетов уже приближается к полутора тысячам. Идея центральной системы хранения и распространения пакетов — CRAN известного как Comprehensive R Archive Network (http://cran.rproject.org/) была заимствована из TEX-сообщества (CTAN, или Comprehensive TeX Archive Network; аналогичной схемой пользуется и Perl-сообщество: CPAN или Comprehensive Perl Archive Network). Все три упомянутых проекта объединяет одно: стабильная база и множество дополнений. В отличие от добавления новой функциональности в монолитную программу, качественный пакет может сравнительно легко написать один человек за вполне обозримый промежуток времени.

Пакеты

Важное преимущество R — наличие для него многочисленных расширений или пакетов буквально на все случаи жизни. При установки R на компьютер, несколько пакетов уже в наличии: так называемые базовые пакеты, без которых система просто не работает (скажем, пакет,который так и называется base, или пакет grDevices, который управляет выводом графиков), и ещё «рекомендованные» пакеты (пакет для специализированного кластерного анализа cluster, пакет для анализа нелинейных моделей nlme и пр.). Кроме того можно поставить любой из почти полутора тысяч (!) доступных на CRAN пакетов. При доступном Интернете, это можно сделать прямо из R командой install.packages() (а под Mac и Windows есть соответствующие пункты в меню). Если соединение с сетью похуже, то можно скачать исходные тексты пакетов (под GNU/Linux) или скомпилированные пакеты (под Mac или Windows) и установить прямо с диска. После скачивания исходников пакета перед использованием сначала его нужно скомпилировать, потому что многие пакеты содержат код на FORTRAN или C. Как только пакет установлен, то он сразу готов к работе. Нужно только инициализировать его перед употреблением. Для этого служит команда library().

Форматы данных

С точки зрения статистики, данные принято делить на типы в зависимости от того, насколько близко их можно представить при помощи известной метафоры числовой прямой. Например, возраст человека легко представить таким образом, за тем исключением, что он не может быть отрицательным. Размер ботинок представить так уже сложнее, поскольку между двумя соседним размерами, как правило, не бывает промежуточного значения. В то время как между двумя любыми числами на числовой прямой всегда можно найти нечто промежуточное. Зато размеры можно хотя бы расположить по возрастающей или по убывающей. А вот пол человека так представить уже совсем не получится: есть только два значения, и «промежуточного» просто не бывает. Мы, конечно, можем обозначить женский пол единицей, а мужской — нулём (или двойкой), но никакой числовой информации эти обозначения нести не будут — их даже нельзя отсортировать. Есть ещё и другие специальные виды данных, например, углы, географические координаты, даты и т. п., но все они так или иначе могут быть представлены с помощью чисел. Таким образом, наиболее принципиальное различие между типами данных — это можно или нельзя их представить при помощи «обычных» чисел. Если нельзя, то такие данные принято называть категориальными. Статистические законы, а, значит, и статистические программы, работают с такими данными, только если заранее указан их тип. Остальные типы данных в разных книгах называют по разному: числовые, счётные, порядковые или некатегориальные. Примем название «числовые» как самое простое. Итак, основными типами данных являются:

  • Числовые векторы
  • Факторы
  • Пропущенные данные
  • Матрицы
  • Списки

Примеры

Средний балл выпускника вуза

# В переменную a поместить список всех оценок:
a <- c(4,3,3,3,3,4,4,4,4,4,5,4,4,4,5,5,5,5,+
3,5,5,4,4,3,3,4,4,3,5,5,4,3,3,4,4,3,3,5,4,5,5)

# В переменную n поместить количество оценок:
length(a) -> n

# Средний балл:
m <- mean(a)

# Таблица (горизонтальная) с подсчётом количества оценок:
t <- table(a)

# Преобразование в более удобный формат данных (вертикальную таблицу):
f <- as.data.frame(t)

# Вычисление процентной доли и запись её в третий столбец:
mapply(function(r) r*100/n, f[,2]) -> f[,3]

# Заголовки столбцов:
colnames(f) <- c("Оценка", "Кол-во", "%")

# Вывод результатов:
a
n
m
f

Результат:

[1] 4 3 3 3 3 4 4 4 4 4 5 4 4 4 5 5 5 5 3 5 5 4 4 3 3 4 4 3 5 5 4 3 3 4 4 3 3 5
[39] 4 5 5
[1] 41
[1] 4
  Оценка Кол-во        %
1      3     12 29.26829
2      4     17 41.46341111
3      5     12 29.26829

Основные этапы развития

Полный список изменений сохраняется в "R News" файле в CRAN.[2] Вот перечисление некоторых, самых крупных из них.

Номер релиза Дата Описание
0.16 20/01/1997 Это последняя альфа версия разработанная, в первую очередь, Ihaka и Gentleman. Была осуществлена большая часть функциональных возможностей, описанных в "White Book". Рассылка началась 1 Апреля 1997.
0.49 23/04/1997 Является старейшим релизом, который доступен на CRAN.[3] CRAN начал работу в этот день, с 3 зеркалами, которые первоначально принимали 12 пакетов.[4] Альфа версия R для Microsoft Windows и Mac OS стали доступны немного позже этой версии.
0.60 05/12/1997 R стал официальной частью GNU Project. Код размещен и поддерживается при помощи CVS.
0.65.1 07/10/1999 Появилась первая версия update.packages и install.packages функций для загрузки и установки из CRAN.[5]
1.0 29/02/2000 Разработчики посчитали эту версию достаточно стабильной для промышленного использования.[6]
1.4 19/12/2001 S4 методы были введены и первая версия для Mac OS X стала доступна вскоре после этого.
2.0 04/10/2004 Введена "ленивая загрузка", которая обеспечивает быструю загрузку данных с минимальными затратами системной памяти.
2.1 18/04/2005 Введена поддержка для UTF-8 кодировки, и началась интернационализация и локализация для различных языков.
2.11 22/04/2010 Появилась поддержка 64 битной системы Windows .
2.13 14/04/2011 Появились новые функции компилятора, позволяющие ускорять функции, преобразовывая их в байт-код.
2.14 31/10/2011 Добавлены обязательные неймспейсы для пакетов. Добавлены новые, параллельные пакеты.
2.15 30/03/2012 Новые функции балансировки нагрузки. Улучшена скорость сериализации для длинных векторов.
3.0 03/04/2013 Поддержка числовых значений индексов 231 и длиннее на 64 битных системах.

Интерфейсы

Графический интерфейс пользователя

  • Architect – кроссплатформенная, открытая IDE, основанная на Eclipse и StatET.
  • DataJoy[7] – Онлайн R редактор, ориентированный на начинающих разработчиков и совместной работы.
  • Deducer[8] – GUI для анализ данных на основе меню (похож на SPSS/JMP/Minitab).
  • Java GUI для R – кроссплатформенный, автономный терминал R и редактор, основанный на |Java (также известный, как JGR).
  • Number Analytics - GUI дляR основанный на бизнес-аналитике (похож на SPSS), работающий в облаке.
  • Rattle GUI – кроссплатформенный GUI основанный на RGtk2 и разработанный для интелектуального анализа.
  • R Commander – кроссплатформенный, управляемый из меню GUI основанный на tcltk (несколько плагинов для Rcmdr также доступны).
  • RGUI – поставляеся с предварительно скомпилированной версией R для Microsoft Windows.
  • RKWard – расширяемый GUI и IDE для R.
  • RStudio – кроссплатформенный опенсорс IDE (который также может быть запущен на удалённом сервере Linux).

Специальный выпуск Journal of Statistical Software обсуждает GUI для R.[9]

Редакторы и IDE

Текстовые редакторы и IDE с некоторой поддержкой R включает в себя: ConTEXT, Eclipse (StatET),[10] Emacs (Emacs Speaks Statistics), LyX (модули для knitr и Sweave), Vim, jEdit,[11] Kate,[12] Революция R enterprise разработчкика (часть революции R Enterprise),[13] RStudio,[14] Sublime Text, TextMate, Atom, WinEdt (R Package RWinEdt), Tinn-R, Notepad++,[15] и Architect.[16]

Скриптовые языки

Функциональность R блыла доступна из нескольких языков сценариев, таких какPython,[17] Perl,[18] Ruby,[19] F#[20] и Julia. Скрипты в R возможны сами по себе через front-end, называемый littler.[21]

useR! конференции

официальный ежигодный сбор пользователей R называется "useR!".[22]

Первое такое мероприятие useR! было в 2004 in May 2004, в Австрии.[23] После пропуска в 2005, useR конференция проходит ежигодно, обычно, чередуя место проведение между Европой и Северной Америкой.[24]

Списпок последующих конференций:

  • useR! 2006, Вена, Австрия
  • useR! 2007, Эймс, штат Айова, США
  • useR! 2008, Дортмунд, Германия
  • useR! 2009, Ренн, Франция
  • useR! 2010, Гайтерсбург, штат Мэриленд, США
  • useR! 2011, Ковентри, Соединенное Королевство
  • useR! 2012, Нэшвилл, штат Теннесси, США
  • useR! 2013, Альбасете, Испания
  • useR! 2014, Лос-Анджелес, США
  • useR! 2015, Ольборг, Дания[25]
  • useR! 2016, Стэнфорд, Калифорния, США

Сравнение с SAS, SPSS, и Stata

Общее мнение заключается в том, что R хорошо сравнивается с такими популярными статистическими пакетами, как SAS, SPSS, и Stata.[26]

В January 2009, New York Times опубликовал статью о R говоря, что он R получил их признание и представляет потенциальную угрозу для рынка, которую занимают коммерческие пакеты такие, как SAS.[27]

Коммерческая поддержка R

В 2007, Revolution Analytics была создана для обеспечения коммерческой поддержки Revolution R, её распространения R, которое также включает в себя компоненты, разработанные компанией. Основные дополнительные компоненты включают в себя: ParallelR, R Productivity Environment IDE, RevoScaleR для bigdata анализа, RevoDeployR, фреймворк для веб сервисов и возможность для чтения и записи данных в формате SAS.[28]

В 2015, Microsoft завершила сделку по приобретению Revolution Analytics.[29]

Для организации в жестко регулируемых секторах, требующих проверенную версию языка R Mango Solutions разработала ValidR который полностью соответствует требованиям руководящих принципов Food and Drug Administration по валидации и верификации программного обеспечения.

В Октябре 2011, Oracle анонсировали Big Data Appliance, который интегрирован в R, Apache Hadoop, Oracle Linux, и NoSQL базы данных.

Oracle R [30] один из двух компонент "Oracle Advanced Analytics Option"[31] (другой компонент - Oracle Data Mining).

IBM предлагает поддержку в Hadoop исполнении R,[32] и обеспечивает модель программирования для параллельного аналитического анализа информации баз данных в R.[33]

Другие крупные коммерческие системы программного обеспечения, поддерживающие интегразции с R: JMP,[34] Mathematica,[35] MATLAB,[36] Spotfire,[37] SPSS,[38] STATISTICA,[39] Platform Symphony,[40] SAS,[41] Tableau,[42] and Dundas.[43]

Tibco предлагает runtime версию R как часть Spotfire.[44]

Полезные ссылки

Связанные страницы

  1. Hornik, Kurt (November 26, 2015). "R FAQ". Комплексная архивная сеть R. 2.1 What is R?. Retrieved 2015-12-06. 
  2. "R News". cran.r-project.org. Retrieved 2014-07-03. 
  3. https://cran.r-project.org/src/base/R-0/
  4. https://stat.ethz.ch/pipermail/r-announce/1997/000001.html
  5. https://cran.r-project.org/src/base/NEWS.0
  6. Peter Dalgaard. "Релиз R-1.0.0". Retrieved 2009-06-06. 
  7. "Онлайн R редактор - DataJoy". www.getdatajoy.com. Retrieved 2015-12-12. 
  8. "Deducer Manual". www.deducer.org. Retrieved 2014-07-03. 
  9. Valero-Mora, Pedro. "Графический пользовательский интерфейс для R". Journal of Statistical Software (под редакцией Pedro M. Valero-Mora и Ruben Ledesma). Retrieved 2014. 
  10. Stephan Wahlbrink. "StatET: Основанная на Eclipse IDE для R". Retrieved 2009-09-26. 
  11. Jose Claudio Faria. "R синтаксис". Retrieved 2007-11-03. 
  12. "Подсветка синтаксиса". Команда Kate Development. Archived from the original on 2008-07-07. Retrieved 2008-07-09. 
  13. "R PEnterprise DevelopR". Revolution Analytics. Retrieved 2014-04-17. 
  14. J. J. Alaire и colleagues. "RStudio: новая IDE для R". Retrieved 2011-08-04. 
  15. "NppToR: R в Notepad++". sourceforge.net. 8 May 2013. Retrieved 2013-09-18. 
  16. "Архитектор: интегрированная среда разработки для научных данных.". Open Analytics. Retrieved 2015-07-30. 
  17. Gautier, Laurent (21 October 2012). "Простой и эффективный доступ к R из Python". Retrieved 18 September 2013. 
  18. Statistics::R страница на CPAN
  19. RSRuby GitHub проект
  20. F# R провайдер
  21. Eddelbuettel, Dirk (14 July 2011). "littler: front-end скрипты для GNU R". Retrieved 2013-09-18. 
  22. "useR!". Доступен по https://www.r-project.org/conferences.html
  23. "useR! 2004 - Конференция пользователей R". 27 May 2004. Retrieved 2013-09-18. 
  24. R Project (9 August 2013). "R связанные конференции". Retrieved 2013-09-18. 
  25. "useR! конференция 2015". Retrieved 2014-11-17. 
  26. Burns, Patrick (27 February 2007). "Сравнение R и SAS, Stata и SPSS" (PDF). Retrieved 2013-09-18. 
  27. Vance, Ashlee (2009-01-07). "Аналитика данных, загипнотизированных силой программ на R:[Бизнес/Финансовый стол]". The New York Times. 
  28. Morgan, Timothy Prickett (2011-02-07). "'Red Hat for stats' идёт нога в ногу с SAS". The Register, 7 February 2011. Retrieved from http://www.theregister.co.uk/2011/02/07/revolution_r_sas_challenge/.
  29. Sirosh, Joseph. "Microsoft закрыл сделку по приобретению Revolution Analytics". Retrieved 2015-11-22. 
  30. Chris Kanaracus (2012); Oracle Stakes презентовала запуск R в Advanced Analytics , PC World, February 8, 2012.
  31. Doug Henschen (2012); Oracle Stakes презентовала запуск R в Advanced Analytics , InformationWeek, April 4, 2012.
  32. "Что нового в [[IBM]] InfoSphere BigInsights v2.1.2". IBM. Retrieved 8 May 2014.  URL–wikilink conflict (help)
  33. "IBM PureData система для Analytics" (PDF). IBM. Retrieved 2014-05-08. 
  34. JMP (2013). "Разработка аналитического приложения с JMP". SAS Institute Inc. Retrieved 2013-09-19. 
  35. "Новинки Mathematica 9: встроенная интеграция с R". Wolfram. 2013. Retrieved 2013-09-18. 
  36. Henson, Robert (23 July 2013). "MATLAB R ссылка". The MathWorks, Inc. Retrieved 2013-09-18. 
  37. Gibson, Brendan (8 March 2010). "интеграция Spotfire с S+ и R". Spotfire. Retrieved 2013-09-19. 
  38. Clark, Mike (October 2007). "Введение в SPSS 16". University of North Texas Research and Statistical Support. Retrieved 19 September 2013. 
  39. StatSoft (n.d.). "Использование языка R". StatSoft Inc. Retrieved 2013-09-20. 
  40. Parmar, Onkar (31 March 2011). ""R"интегрированный с Symphony". Platform Computing Corporation. Retrieved 2013-09-20. 
  41. SAS (11 November 2010). "Вызов функций в R Language (SAS/IML)". Retrieved 2013-09-20. 
  42. Tableau (17 December 2013). "R тут!". Retrieved 2015-01-29. 
  43. Dundas. "R интегрированный с Dundas BI". Retrieved 2015-07-30. 
  44. Tibco. "Демонстрация всей ловкости языка R для предприятий". Retrieved 2014-05-15.