R (programmeerimiskeel)

R on kõrgtaseme objektorienteeritud interpreteeritav programmeerimiskeel. R on vaba tarkvara (GPL), mida kasutatakse laialdaselt statistikas. R töötab paljudel platvormidel, sh UNIXi-laadsetel operatsioonisüsteemides, nt Linux, Mac OS X ja Microsoft Windows.

R-i töötasid 1990. aastatel välja Ross Ihaka ja Robert Gentleman Aucklandi ülikoolist. Praegu arendab keelt vabatahtlike meeskond (R core team).

Struktuur
R on hierarhilise struktuuriga pakett: ta koosneb põhiosast ja lisapakettidest (package). Valik kõige olulisemaid pakette kuulub "soovitatavate pakettide" hulka ja installitakse tavaliselt koos põhiprogrammiga. R sisaldab oma tarbeks ka lihtsat paketihaldurit.

Võrdlus teiste keeltega
R on S-keele variant ja väga sarnane S-PLUS-iga.

R-i tugevateks külgedeks on keerukate andmestruktuuridega hakkamasaamine. Keele objekt (muutuja) võib sisaldada nii arve, loogilisi suurusi, teksti, kui ka keerukamat infot, näiteks programmilõike.

Keelel on tugev vektor- ja maatriksarvutuse toetus, väga hea indekseerimine, rikkalik matemaatiliste meetodite kogu ning väga võimalusterohke graafika. R on kiiruse ja võimaluste poolest võrreldav Octave'i või MATLAB-iga.

R sisaldab ka tavalisi üldotstarbeliste keelte vahendeid suhtlemiseks operatsioonisüsteemiga ja tekstide töötlemiseks ning võimaldab kasutada C-s (või C++-s) ja fortranis kirjutatud koodi.

Komplekssed andmestruktuurid teevad keele suhteliselt aeglaseks ja mälunõudlikuks. Seepärast on keel muudes rakendustes vähe levinud.

Süntaks
Hello world programm R-is:

 cat("Hello, world!\n")

Maatriksi indekseerimise näide:
# konstrueerime 3x4 maatriksi ja täidame ta normaaljaotusega
# juhuslike arvudega
a <- matrix(rnorm(12), 3, 4)
# Muudame kõik maatriksi negatiivsed elemendid nulliks 
a[a < 0] <- 0
# Täidame maatriksi teise veeru kahtedega
a[,2] <- 2
# Liidame igale maatriksi teise rea elemendile kaks
a[2,] <- a[2,] + 2

Kasutusalad
R-i kasutatakse palju statistikas ja bioinformaatikas (sh biomeetrias).

Vaata ka
Scheme

Programmeerimiskeeled