R — это язык программирования, ставший стандартом де-факто в мире математической статистики. Это определение не очень точное, потому что R используется в первую очередь как среда для интерактивных вычислений. С другой стороны, R — это реализация языка программирования S, выросшего из библиотеки вычислительных функций для FORTRAN с некоторыми отличиями. Развитие S остановилось, а для R как свободной реализации, в которой принимают участие создатели оригинального S, — продолжилось. В последнее время внимание к R повысилось из-за развития приложений анализа данных и вхождения термина data-science в последнюю версию startup buzzword bingo.
Прочитать о ранней эволюции языка S можно в cm.bell-labs.
C чего можно начинать изучение:
R для нетерпеливых: impatient-r.
Стандартное введениедовольно легко читается и дает полную информацию.
Интерактивный онлайн-курс: tryr.codeschool.
Обзор существующих учебников: R-tutorials.
Более серьезная литература:
Формальное определение языка: R-lang.
Advanced R (находящаяся в процессе написания, но очень хорошая): adv-r.had.
Больше ресурсов на StackOverlow info page.
Для любителей русского языка:
Указательна ресурсы.
Книгав свободном доступе.
MOOP курсы:
Statistics for data analysis: coursera.org/course/compdata
Programming in R: coursera.org/course/rprog
Инструментальные средства:
rstudio — IDE для тех, кому не хватает минималистичного интерфейса командной строки.
Knitr — среда «составления аналитических отчетов», где можно комбинировать текст в Markdown или LaTeX с графиками и данными из R.
Связка R и Excel.
Развитие R проистекает немного не так, как в традиционных языках программирования, а скорее ближе к развитию естественных языков. К примеру, как и все современное, R поддерживает объектно-ориентированное программирование. Однако, в отличие от большинства современных языков, в R одновременно поддерживается несколько объектных систем: S3, S4 и Reference Classes (часто называемая R5). Обзор можно посмотреть в adv-r.hadили digitheadslabnotebook.
Также существует популярная система r-proto, предоставляющая прототипно-ориентированную объектную модель. Это все существует и развивается параллельно. Динамическая типизация тут соседствует с использованием зависимых типов (до того как это стало мейнстримом ;) - тип возвращаемого функцией значения может зависеть не только от типа, но и от размерности аргументов.
C++ встраивается в Rкак скриптовый язык (впрочем, как и наоборот).
В R просто огромный репозиторий пакетов. Как правило, если какой-то статистический метод где-то опубликован, то его реализация есть в CRAN.
rdocumentation — индекс всех пакетов с поиском.
shiny.rstudio — современный web-фреймворк для R, предоставляющий реактивную связь между серверной и клиенской моделью.
RHadoop — map/reduce в handoop.
RStorm — stream-processing в storm (более подробная статья).
SparkR-pkg — интерфейс к Apache spark.
revolutionanalytics — коммерческая версия R с Big Data расширениями.
Более конвенциональный подход заключается в том, что на R обычно пишут прототип алгоритма, а сам алгоритм реализуют на каком-то «программистком» языке.
Двухсторонняя связь R и Java/Scala: dahl.byu.
Cуществуют реализации R для JVM: от Oracleи от BeDataDriven, но практически использовать их в production режиме еще невозможно.
Еще один распространенный пакет для вызова R из JVM — RCaller.
Видео:
R: The good, the bad and the uglyна GOTO-2012.
Why and How People Use R на Lang-Next 2012
Present and Future of the R programming languageна Lang-Next 2014.
Локальные применения:
- Рейтинги языковна ДОУ.
- Сенсор обнаруженияогневых точек.