R (proqramlaşdırma dili)

**R** — statistik verilənlərin emalı və qrafika üçün proqramlaşdırma dili, həmçinin GNU layihəsi çərçivəsindəki azad və açıq mənbəli hesablama mühiti. Bu dil Bell Labs-da hazırlanmış S dilinə oxşar şəkildə yaradılıb və dillər arasında əhəmiyyətli fərqlərin olsa da, onun alternativ tətbiqidir, lakin əksər hallarda S dilindəki kod R mühitində işləyir. R ilk olaraq Oklend Universitetinin statistika fakültəsində Ross Ayhek (ing. *Ross Ihaka*) və Robert Centlmen (ing. *Robert Gentleman*) (adlarının baş hərfi — R) tərəfindən hazırlanan; hal-hazırda isə R fondu tərəfindən saxlanılan və inkişaf etdirilən dil və mühitdir.

Statistik verilənlərin təhlili proqramı kimi geniş istifadə olunur və statistik proqram təminatı üçün faktiki standarta çevrilmişdir.

Dil və mühit GNU GPL əsasında lisenziyalaşdırılıb; mənbə kodları, həmçinin bir sıra əməliyyat sistemləri üçün tərtib edilmiş proqramlar — FreeBSD, Solaris, Unix və Linux distributivləri, Microsoft Windows, Mac OS X kimi paylanmışdır.

R Commander, RKWard, RStudio, Weka, Rapid Miner, KNIME və ofis paketlərinə inteqrasiya vasitələri kimi müxtəlif qrafiki interfeyslər mövcud olmasına baxmayaraq, R əmr sətirli interfeysdən istifadə edir.

2010-cu ildə R Infoworld jurnalının ən yaxşı açıq mənbəli proqram təminatının inkişafına görə mükafata layiq görülmüşdür.

## Xüsusiyyətləri
R — interpretasiya olunan proqramlaşdırma dilidir, yəni o əsasən əmr interpretatoru ilə işləyir. Dil hərflərə həssasdır, sintaksis baxımından bir tərəfdən Scheme kimi funksional dillərə, digər tərəfdən isə sadə sintaksisə və kiçik bir əsas strukturlar dəstinə malik tipik müasir skript dillərinə bənzəyir. Obyekt dili: hər hansı bir proqram obyekti bir sıra atributlara — onu müəyyən edən qiymətlərin adlandırılmış siyahısına malikdir.

Dil primitiv məlumat növlərinin minimum dəstini dəstəkləyir: simvollu (character), ədədi (numeric), məntiqi (logical) və kompleks (complex). Ədədi dəyişənlər, adi ədədlərə əlavə olaraq, NaN (Not a Number — "ədəd deyil") və Inf (Infinity — "sonsuzluq") kimi xüsusi qiymətləri qəbul edə bilər. Sonsuzluq (müsbət və ya mənfi), hesablama nəticəsi, realizasiyanın diapazon hüdudlarından kənara çıxdıqda, NaN — təyin olunmamış nəticə ilə əməliyyatlar zamanı əldə edilir. Bunlara əlavə olaraq, digər vacib xüsusi qiymət, NA (Not Available — "mövcud deyil") da vardır. Bu hesablamalarda istifadə edilən qiymətin hər hansı bir səbəbdən edilməməsi faktını qeyd etmək üçün istifadə edilə bilər (statistik hesablamalarda verilənlərin toplanılmasındakı uğursuzluqlar səbəbindən bəzi müşahidələrin nəticəsiz qalması olduqca yayğın bir durumdur).

İbtidai növlərin dəyərləri vektorlara (vector), siyahılara (list), matrislərə və ya massivlərə (matrix), o cümlədən çoxölçülülərə birləşdirilə; bu birləşdirilmiş növlər isə eyni primitiv tipli verilənlər dəstini saxlaya bilər. Bundan əlavə, dilə faktor (factor) anlayışı — ciddi şəkildə müəyyən edilmiş qiymətlər çoxluğunu qəbul edən kateqoriyalı və ya miqyaslı verilənlər dəstinə daxildir. Nəhayət, cədvəllər (data frame) — hər bir sıra (individ) üçün müxtəlif (və müxtəlif növlərə malik) parametrlər (xüsusiyyətlər) dəstini saxlayan verilən strukturları yaradıla bilər. R-in bir xüsusiyyəti ondan ibarətdir ki, vektorlar və matrislərlə əməliyyatlar, məsələn, APL-də olduğu kimi, dil səviyyəsində dəstəklənir.

Verilənlərin çıxarılması və qeyd olunması əməliyyatı (tapşırığın analoqu) "`<-`", həmçinin hesab da daxil olmaqla verilənlərlə işləmək üçün adi əməliyyatlar mövcuddur. Vektor və massivlərin elementlərinə indeks üzrə giriş kvadrat mötərizədə, siyahı atributlarına giriş "`$`" operatoru vasitəsilə həyata keçirilir. Ümumi imperativ proqramlaşdırma strukturları minimal dəstə: `if` şərt ifadəsinə, `while` və `for` dövrlərinə malikdir. R-də ifadələr ayrı-ayrı obyektlər kimi təsvir edilə və lazım olduqda qiymətləndirilə bilər. Funksiyaların təsviri eyni mexanizmə əsaslanır. Vektor və massivlərə ifadə və funksiyaların tətbiqi üçün daxili imkanlar mövcuddur. R-in funksiyaları istənilən proqrama qoşulan və onlarda birləşdirilmiş hesablama vasitələrini təmin edən yüklənə bilən modullarla paketləşdirilə bilər. R üçün paketlər digər proqramlaşdırma dillərində, o cümlədən C-də də hazırlana bilər ki, bu da bir tərəfdən R dilinin özünün məhdud vizual resurslarını kompensasiya etməyə, digər tərəfdən isə zərurət yarandıqda yüksək hesablama səmərəliliyinə nail olmağa imkan verir.

Dilin özündə verilənləri təsvir etmək üçün kifayət qədər məhdud və çox rahat olmayan vasitələr var, lakin bu, ən açıq və bir çox özəl formatlarda təqdim olunan verilən dəstlərini R cədvəlləri kimi yükləməyə imkan verən kitabxana alətlərinin olması ilə kompensasiya olunur. Beləliklə, sadə mətn formatında cədvəllər, müxtəlif versiyaların Excel cədvəlləri, CSV-dəki verilənlər, XML formatları və bir çox başqaları asanlıqla R-ə yüklənə bilər.

Ümumiyyətlə, bir proqramlaşdırma dili olaraq, R olduqca sadə, hətta primitivdir. Onun ən güclü yönü paketlərlə qeyri-müəyyən müddətə genişlənmə qabiliyyətidir. R-nin əsas paylanmasına 2019-cu ilə qədər cəmi 15.316-dan çox paket mövcud olan əsas paketlər dəsti daxildir. R-də universal statistik hesablamanın demək olar ki, bütün müvafiq alətləri, məsələn, reqressiya analizi və zaman sıralarının analizi, habelə yüksək ixtisaslaşmış problemlərin həlli və müəyyən sahələrdə tədqiqat aparmaq üçün bir çox xüsusi alqoritmlər tətbiq olunur.

Dilin başqa bir xüsusiyyəti ümumi qrafik formatlara ixrac edilə bilən və təqdimatlar və ya nəşrlər üçün istifadə edilə bilən yüksək keyfiyyətli tipoqrafik səviyyəli qrafiklər yaratmaq qabiliyyətidir. Hazır paketlər mövcuddur ki, R-i GUI çərçivələri ilə əlaqələndirir (məsələn, Tcl/Tk əsasında olanlar) və qrafik istifadəçi interfeysi ilə xüsusi statistik analiz yardım proqramları yaratmağa və nəticələri qrafiklər və diaqramlar şəklində göstərməyə imkan verir.

## Nümunələr

### Baza sintaksisi

```r
> x <- c(1,2,3,4,5,6)   # Sıralı yığımın yaradılması
> y <- x^2              # x-in kvadrata yüksəldilməsi
> print(y)              # y-in çap edilməsi
[1]  1  4  9 16 25 36
> mean(y)               # y-in ədədi ortasını hesablanması; nəticə - ədəd
[1] 15.16667
> var(y)                # Variasiyanın hesablanması
[1] 178.9667
```


### Universitet üçün orta bal

```rsplus
# Bütün göstəricilərin siyahısını a dəyişəninə daxil edilməsi:
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)

# Göstəricilərin sayının n dəyişəninə daxil edilməsi:
length(a) -> n

# Orta bal:
m <- mean(a)

# Göstəricilərin sayını hesablayan cədvəl (üfüqi):
t <- table(a)

# Verilənin daha rahat formata çevrilməsi (şaquli cədvəl):
f <- as.data.frame(t)

# Faizin hesablanması və üçüncü sütuna yazılması:
mapply(function(r) r*100/n, f[,2]) -> f[,3]

# Sütun başlıqları:
colnames(f) <- c("Qiymətləndirmə", "Miqdar", "%")

# Nəticələrin çıxışı:
a
n
m
f
```

Nəticə:
```
[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     |   çıxış a (41-dən 38-i sətirə uyğundur)
[39] 4 5 5                                                                          |   (qalan üç ədəd)
[1] 41                                                                              |   çıxış n
[1] 4                                                                               |   çıxış m
  Kəmiyyət göstəricisi   %                                                            |   1-ci sütun - cədvəldəki sıra nömrəsi
1      3     12 29.26829                                                            |   2-ci sütun - qiymətləndirmə növü ("3"/"4"/"5")
2      4     17 41.46341111                                                         |   3-cü sütun - reytinqlərin sayı
3      5     12 29.26829                                                            |   4-cü sütun - qiymətlərin faizi
```


## İnterfeyslər
R ilə işləmə rahatlığı üçün RStudio, JGR, RKWard, SciViews-R, Statistical Lab, R Commander, Rattle, həmçinin Shiny proqram paketi də daxil olmaqla bir sıra qrafik interfeyslər hazırlanmışdır. Bundan əlavə, bir sıra mətn və kod redaktorları, xüsusən, ConTEXT, Emacs (Emacs Speaks Statistics), jEdit, Kate, Notepad++, Syn, TextMate, Tinn-R, Vim, Bluefish, WinEdt (RWinEdt paketi ilə), Gedit (rgedit/gedit-r-plugin paketi ilə) R ilə işləmək üçün xüsusi rejimləri təmin edir.

## Kommersiya dəstəyi
2007-ci ildə qurulan və 2015-ci ildə Microsoft tərəfindən alınan Revolution Analytics bütün işini R proqramlaşdırma dilinin, onun Revolution R kommersiya paketinin ParallelR (dilin pulsuz versiyası ilə bölüşdürülməyən) R Productivity Environment (Integrated Development Environment), RevoScaleR ("böyük verilənlər" konsepsiyası çərçivəsində kütləvi paralel emal üçün dəstək), RevoDeployR, veb xidmətləri ilə inteqrasiya üçün kitabxanalar, SAS İnstitutunun statistik paket formatları dəstəyi kimi komponentləri ehtiva edir.

2011-ci ilin oktyabrında Oracle korporasiyası R dilinə və Apache Hadoop-a əsaslanan inteqrasiya olunmuş proqram vasitələri ilə kütləvi paralel emal serverlərindən ibarət NoSQL klasteri olan Big Data Appliance-ı buraxdı və 2012-ci ilin fevralında bu dil Oracle Database-də quruldu. 2011-ci ildə IBM korporasiyasının Netezza aparat və proqram sistemlərində R vasitəsi ilə kütləvi-paralel analiz həyata keçirilmişdir; daha sonra bu dil SAP Hana aparat və proqram sistemində dəstəklənməyə başlanılmışdır.

R dili, həmçinin Tibco Spotfire, SPSS (versiya 16.0-dan), Statistica (9.0 versiyasından), Platform Symphony, Power BI, SAS, Tableau kommersial proqram mühitləri tərəfindən dəstəklənir.

## CRAN
R və əlavə paketlər CRAN (*Comprehensive R Archive Network-*un akronimi) vasitəsilə paylanır. 2010-cu illərin sonuna olan məlumata görə, dünyada 60-dan çox CRAN güzgüləri mövcuddur, başlıq Vyanada (Avstriyada) yerləşir.

## R xəbər bülleteni
Statistik emal və mühəndislik üzrə məqalələri özündə əks etdirən sərbəst şəkildə yayılan informasiya jurnalı R Journal ildə iki-üç dəfə nəşr olunur və həm dil istifadəçiləri, həm də R tərtibatçıları üçün nəzərdə tutulub. 2001-ci ilin yanvarından 2008-ci ilin oktyabrına qədər R News bülleteni adı altında nəşr olunurdu.

## Konfranslar
Ən populyar dil konfranslarından biri — *userR!* (*The R User Conference*) 2004-cü ildən bəri hər il keçirilir, müxtəlif sahələrdən ekspertləri bir araya toplayır.

2009-cu ildən bəri Çikaqoda hər ilin yazında R-nin maliyyədə tətbiqinə həsr olunmuş konfrans keçirilir (*R/Finance:* *Applied Finance with R*). 2013-cü ildə sığortada R-nin istifadəsinə həsr olunmuş ilk konfrans (*R in Insurance*) keçirilmişdir.

## İstinadlar