R (език за програмиране)

от Уикипедия, свободната енциклопедия
Направо към навигацията Направо към търсенето
R
R logo.svg
Regression cercle coope gruntz GNU R.png
Парадигма масив, обектно-ориентиран, императив, функционален, процедурен, отразяващ
Реализиране през 1993 г.
Софтуерен разработчик Рос Иака, Робърт Джентълмен
Стабилна реализация 3.1.2 / 31 октомври 2014 г.
Операционна система Cross-платформа
Софтуерен лиценз GNU General Public License
Уебсайт http://www.r-project.org/
R в Общомедия

Програмният език R е система за статистически анализи и графики, създадена от Рос Ихака и Робърт Джентълмен. R е едновременно и програмен език и софтуерна среда. Този език се смята за диалект на езика S, създаден от AT&T Bell Laboratories.

История[редактиране | редактиране на кода]

Създаден през 1996 г. (самия проект стартира още през 1990 г.) от двама професори по статистика – Робърт Джентълмен и Рос Иака от Университета в Оукланд, Нова Зеландия, като open-source алтернатива на програмния език S. В самото си начало той е озаглавен GNU S като по-късно е преименуван на R, което произлиза от началните букви на малките имена на неговите създатели. S, като език за програмиране е творение на екипа на Джон Чембърс от лабораториите на Бел в Ню Джърси, САЩ и широко разпространен измежду статистиците и математиците. По своята същност R е като своеобразен диалект на S.

Какво е R и как работи?[редактиране | редактиране на кода]

Какво е R?[редактиране | редактиране на кода]

Както се разбира от неговото пълно име: програмен език и развойна среда за статистическа и математическа обработка на данни, мощен инструмент използван от хиляди учени, преподаватели и студенти по света, от най-различни дисциплини и направления. През последните години изучаването на езика се превръща в стандарт в катедрите по статистика и математика на повечето от университетите в Западна Европа и САЩ. Все повече и повече научни и бизнес институции където се провеждат статистически и математически изследвания и обработка на данни изискват от настоящите и бъдещи си служители умения за работа с R. Сред поддържащите и използващите езика институции са компании като: Google, Аstra, Меrck, АТ&Т Labs, Baxter Healthcare Corporation и много други. По думите на Дарил Прегибон, изследовател в „Google“ и цитиран в статията във вестник New York Times посветена на R, ”Езика за компанията е толкова важен че е трудно да си представим какво би било ако него го нямаше. R позволява на учените да провеждат сложни анализи без да е необходимо те да притежават задълбочени познания в областта статистиката, математиката, както и на компютрите и компютрите системи”.

Езика включва възможности за работа с различни типове данни – както числови, така и низови и логически (булеви). Обектни структури като: вектори, фактори, списъци, матрици и датафреймове, if-else, for, repear и други. Възможностите на R в това отношение по настоящем се използват широко при изграждането на математически симулации и модели на различни биологични и природни системи.

„R“ е наличен във няколко форми: сорс файлове (главно написани на С, с някои съчетания с „Fortran“), главно за „Unix“ и „Linux“ платформи, както и под формата на прекомпилирани бинарни файлове за Windows, Linux и Macintosh. Файловете нужни за инсталирането на „R,“ както под формата на сорс файлове, така и на прекомпилирани двоични файлове, се предоставят от интернет сайта на „Comprehensive R Archive Network (CRAN)“, където са налични и инструкциите за инсталация.

Как работи R?[редактиране | редактиране на кода]

Синтаксисът в „R“ езикът е много прост и интуитивен. При него не се изисква компилиране на кода, а той се изпълнява в момента на изписване. За пример може да се направи линейна регресия с командата „lm(x ~ x).“ За да се изпълни една функция тя винаги трябва да бъде записана със скоби, без значение дали са нужни или не. Ако бъде изписано името на функцията, без скоби, „R“ ще изведе на екрана съдържанието на функцията.

При изпълнение на „R“ променливите, информацията, функциите, резултатите и т.н. се запазват в „RAM“ паметта на компютъра, под формата на обекти, които имат име. Потребителят може да манипулира тези обекти посредством оператори (аритметически, логически, за сравнение и други) и функции (това са самите обекти). На фигурата по – долу е дадена графика на една „R“ функция.

R-Exemple Climatologie Brest

Аргументите могат да бъдат обекти (информация, формули, изрази и други), някои от които могат да се определят, като функции по подразбиране (стойностите по подразбиране могат да бъдат променяни от потребителя). Една „функция“ в езика „R“ може да изисква аргументи: всички аргументи могат да са дефинирани по подразбиране или може да съществува такава, в която няма аргументи.

Както бе посочено по – горе, всички действия се извършват върху обекти, разположени в „RAM“ паметта и не се изискват временни файлове „(temporary files).“ Четенето и писането на файлове се използва за вход и изход на информация и резултат. Потребителят изпълнява функцията чрез команди. Резултатът се визуализира директно на екрана, запазва се в обект или се записва на твърдия диск. Тъй като резултатите сами по себе си са обекти, те могат да бъдат разглеждани като информация, която може да бъде анализирана. На фигурата по – долу е изобразено как работи „R.“

Функциите, налични за потребителя, се намират в библиотеки, които са разположени в директорията „R_HOME/library“ („R_HOME“ е директорията, където „R“ инсталиран). В тази директория се съдържат групи („packages)“ от функции, които също са структурирани в папки. Основната група от функции в „R“ се нарича „base“ (база) и съдържа в себе си основните функции, за четене и манупилиране на информация, на езика.

Статистически характеристики[редактиране | редактиране на кода]

R и библиотеките му имплементират голяма разновидност от статистически и графични технологии, включително линейни и нелинейни модели, класически статистически тестове, времеви анализи, класификации и други. R е лесно разширяем чрез функции и допълнения. Много от стандартните функции в езика са написани на R, което улеснява потребителите да следват алгоритъма. За интензивно изчислителни задачи, С, С++ и Fortran код могат да бъдат извикани и стартирани, по време на изпълнение на програмата. За по – напредналите потребители е предоставена възможност да пишат собствен С, С++, Java, .NET или Python код, който директно да манипулира R обекти.

Както беше отбелязано по – горе, R е лесно разшируем език, чрез използване на потребителски пакети за конкретни функции или конкретни области на изследване. Поради сходствата си със S, R предоставя по – големи ООП удобства спрямо повечето статистически езици.

Друга силна черта в езика R са статичните графики, които могат да създадат висококачествени графики, включвайки математически символи. Посредством външни библиотеки са достъпни динамични и интерактивни графики.

Програмистки характеристики[редактиране | редактиране на кода]

R е интерпретиран език. Обикновено потребителите имат достъп чрез командния ред. Ако потребител въведе 2+2 в командния прозорец на R и натисне „ENTER“, компютърът отговаря с 4, както е показано по – долу:

> 2+2
[1] 4

Както други подобни езици, като APL и MATLAB, R поддържа матрична алгебра. Структурите от данни включват вектори, матрици, масиви, листове и други. Разширените обекти в R включват: регресивни модели, географски координати и други. R поддържа процедурно програмиране с функции и ООП с функции с широко приложение. Функциите с широко приложение извършват различни изчисления спрамо подадените аргументи. За пример, R притежава функция print, която печата почти всякакъв обект, чрез синтаксиса print(objectname).

Примери[редактиране | редактиране на кода]

Match()

Намира на коя позиция в масива 'c' се намира 5. Изписва позиция 3.

> print(match(5, c(2,7,5,3))) # 5 is in 3rd place
[1] 3

sum()

Събира числата в скобите.

> sum(1,3,5)
[1] 9

rep()

> rep("Yo ho!", times = 3)
[1] "Yo ho!" "Yo ho!" "Yo ho!"

sqrt()

Намира корен от числото в скобите.

> sqrt(16)
[1] 4

seq()

Пример 1 : Изписва числата от първия параметър (5) до втория параметър (9).

Пример 1 : Изписва числата от първия параметър (5) до втория параметър (9), като увеличава с всяко с 0,5.

> seq(5,9)
[1] 5 6 7 8 9

> seq(5, 9, 0.5)
[1] 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0

Вектор от низове

1: Създаваме променлива (масив от низове) sentence, която съдържа „walk, the, plank“,

2: Изписваме на конзолата третия елемент съдържащ се в масива sentence.

3: Променяме третия елемент на 'dog'.

4: Изписваме първия и третия елемент в масива.

> sentence <- c('walk', 'the', 'plank')
> sentence[3]
[1] "plank"

> sentence[3] <- 'dog'

> sentence[c(1, 3)]
[1] "walk" "dog"

Работа с променлива

1: Създаваме 'х' със стойност 42.

2: Разделяме 'х' на 2 и на конзолата се изписва 21.

3: Създаваме променлива 'c' която съдържа „a,b,c“ и тя се изписва на конзолата.

> x <- 42
> x/2
 [1]21

> c('a', 'b', 'c')
 [1] "a" "b" "c"

Важни събития[редактиране | редактиране на кода]

Пълният списък на промените се съхранява във файла "R News" при CRAN. Някои основни положения са описани по-долу за няколко важни редакции.

Релийз Дата Описание
0.16 Това е последната Алфа версия, разработена главно от Ихака и Джентълман. По-голямата част от основното съдържание на „Бялата книга“ (виж историята на програмен език S) бе приложено в практиката. Пощенските списъците бяха изготвени на 01.04.1997 година.
0.49 23.04.1997 Това представлява най-старият наличен изходен код и обхваща ограничен брой платформи подобни на Unix. CRAN бе пуснат в експлоатация на тази дата, с 3 огледални сървъра, които първоначално хостват 12 пакета. Алфа версиите на R за Microsoft Windows и Mac OS бяха пуснати скоро след тази версия.
0.60 05.12.1997 R става официална част от проекта ГНУ. Кодът се хоства и поддържа на CVS.
1.0 29.02.2000 Смятан от неговите разработчици за достатъчно стабилна и надеждна за използване.
1.4 19.12.2001 Въвеждат се S4, а първата версия на Mac OS X се появява скоро след това.
2.0 04.10.2004 Въвежда се Lazy loading, което позволява бързо зареждане на данни с минимален разход на системната памет.
2.1 18.04.2005 Поддръжка на UTF-8 енкодинг и се поставя началото на интернационализацията и Езикова локализация за целите на различни езици.
2.11 22.04.2010 Поддръжка за Windows 64 битови системи.
2.13 14.04.2011 Добавяне на нова компилираща функционалност, която позволява ускоряване на останалите функции чрез конвертирането им в байт код.
2.14 31.10.2011 Добавяне на задължителни именни пространства за пакетите. Добавен е нов паралелен пакет.
2.15 30.03.2012 Нови функции за балансиране на натоварването. Подобрена скорост на сериализацията за дълги вектори.
3.0 03.04.2013 Поддръжка за числовите индексни стойности31 и по-големи в 64-битови системи.

Интерфейси[редактиране | редактиране на кода]

Графичен потребителски интерфейс[редактиране | редактиране на кода]

  • RStudio
  • Deducer
  • Java GUI for R
  • Rattle GUI
  • R Commander]
  • Revolution R Productivity Environment (RPE)
  • RGUI
  • RKWard
  • RWeka

useR! конференции[редактиране | редактиране на кода]

„useR!“ е името дадено на официалното годишно събиране на потребителите на R. Първото такова събитие бе наречено useR! 2004 и се проведе през май 2004 година във Виена, Австрия.[54]. След като бе пропусната 2005 година, конференцията на потребителите на R се провежда ежегодно, като обикновено се получава редуване между Европа и Северна Америка.[55] Следващите конференции се проведоха, както следва:

  • useR! 2006, Виена, Австрия
  • useR! 2007, Еймез, Айова, САЩ
  • useR! 2008, Дортмунд, Германия
  • useR! 2009, Рен, Франция
  • useR! 2010, Гайтесбург, Мериленд, САЩ
  • useR! 2011, Ковънтри, Великобритания
  • useR! 2012, Нашвил, Тенеси, САЩ
  • useR! 2013, Албасете, Испания
  • useR! 2014, Лос Анжелис, САЩ
  • useR! 2015, Аалборг, Дания [56]

Допълнения[редактиране | редактиране на кода]

От сайта на фондацията http://www.r-project.org/ са достъпни за безплатно сваляне множество допълнителни ръководства и безплатни книги посветени на програмирането с R. До момента има издадени над 50 учебници ръководства както в областта на статистиката и математиката като цяло, така и посветени на спецификата при различните науки като физика, биология, екология, медицина, сеизмология, геология и др.

Външни препратки[редактиране | редактиране на кода]