R (programazio-lengoaia)

**R** analisi estatistikora bideratuta dagoen programazio-lengoaia da. C programazio-lengoaian idatzita dago. Gaur egun ikerkuntzan komunitate estatistikoak gehien erabiltzen duen lengoaietako bat da: datu meatzaritzan, ikerkuntza biomedikoan, bioinformatikan eta finantzetako matematikan ere oso erabilia da.

Herrialde batzuetan eskoletan sartzen hasi dira software hau haur-hezkuntzatik hasita era bigunean, haurrei pentsamendu matematikoa eta estatistikoa garatzeko aukera ematen dielako; horretarako bereziki eratuta dago RKids tresna. Honen arrazoi nagusietako bat grafikak eta kalkuluak egiteko funtzioekin hainbat biblioteka edo pakete kargatzeko aukera eskaintzen dituela.

Grafikak sortzeko eta kalkuluak egiteko bereziki inplementatutako funtzioak ditu biblioteka edo paketetan antolatuta. GNU sistemaren parte da R eta GNU GPL lizentziapean banatzen da. Windows, Macistosh, Unix eta GNU/Linux sistema eragileetarako dago eskuragarri.

## Historia 
Hasiera batean University of Auckland-eko Estatistika Departamentuan garatu zuten Robert Gentleman eta Ross Ihaka-k 1993an. Baina bere erroetara joz gero, esan daiteke AT&T-ren Bell Laboratories-en izan zuela hasiera S lengoaiarekin. Hasiera batean datuen analisirako sistema bat garatu zuten John Cambers, Rick Becker eta beste laguntzaile batzuk 70. hamarkadaren amaiera aldera. Diseinatzaileek jada existitzen ziren bi lengoaien sendotasunak batu zituzten: S eta Scheme. Haien hitzak hauek izan ziren:"R lengoaia itxuraz S-ren oso antzekoa da, baina hura erabiltzeko modua eta semantika Schemetik eratorriak izan dira".Egindako lanaren ondorioz lortutako lengoaiari R deitu zioten "nolabait S-ren eragina aitortzeko asmoz".

Rren garapena gaur egun *R Development Core Team*-en esku dago. Horretaz gehiago jakin nahi izanez gero, nahikoa da Rren ingurunean bertan contributors() idaztea; hasierako egileen eta gaur egun *R Development Core Team*-en lanean ari direnen izenak erakusten dira.

Rren garapenean une gogoangarri batzuk honakoak dira:
* thumb|342x342px0.16 bertsioa: Ihaka eta Gentleman-ek soilik garatutako azken alfa bertsioa.

* 1997ko Apirilaren 1a: Posta-zerrendaren hasiera.

* 0.49 bertsioa (1997): Kode eta guzti mantentzen den bertsiorik zaharrena. CRAN martxan jarri zen; 3 ispilugune, 12 pakete eskuragarri.
* 0.60 bertsioa (1997): Ofizialki GNU proiektura batu zen.

* 1.0.0 bertsioa (2000): Produkzioan erabiltzeko nahikoa egonkorra badela kontsideratu zen.

* 1.4.0 bertsioa: S4 metodoak sartzen dira eta Mac OS X-erako lehen bertsioa argitaratu zen.

* 2.0.0 bertsioa (2004): Memoria kostu minimoaz datuen karga azkarra gauzatzeko gai izateko *Lazy Loading*-a sartu zen.
* 2.1.0 bertsioa: UTF-8-rako euskarria agertzen da eta internazionalizaziorako ahalegina hasi zen.
* 2.9.0 bertsioa: Rren oinarrizko banaketan “Matrix” paketea sartu zen.
* 2.11.0 bertsioa (2010): 64 bit-eko Windows sistemetarako euskarria gehitu zen.
* 2.13.0 bertsioa (2011): Konpiladoreari funtzio berri bat gehitzen zaio funtzioak *byte-code*-ra bihurtuz haien exekuzioa azkartzeko.
* 2.14.0 bertsioa (2011): Paralelizaziorako pakete berri bat gehitu zen.
* 2.15.0 bertsioa (2012): Bektore handien serializazio-abiadura hobetu zen.
* 3.0.0 bertsioa (2013): Hobekuntzak egin ziren GUI-an, funtzio grafikoetan, memoriaren kudeaketan eta internazionalizazioan.
* 3.4.0 bertsioa (2017): JIT konpiladorea 3. mailan hasieratu zen.

## Ezaugarriak 
Rk tresna estatistiko eta grafiko anitz eskaintzen ditu; eredu linealak eta ez-linealak, test estatistikoak, denbora-segiden analisia, sailkatze-algoritmoak, etab.

S-ren antzera R programazio-lengoaia bat da eta beraz, erabiltzaileak funtzio propioak defini ditzake. Izatez, Rko funtzio gehienak R bera erabiliz idatziak izan dira, nahiz eta konputazionalki garestiagoak diren algoritmoetarako C, C++ edo Fortran lengoaietan garatutako bibliotekak karga daitezken. Erabiltzaile aurreratuenek R-ko objektuak C-n garatutako programetatik zuzenean erabil ditzakete. Gainera, erabiltzaile komunitateak garatutako paketeak erabiliz ere heda daiteke R.

S-tik jaso du Rk objektuei orientatutako lengoaia izaera. Rren beste ezaugarri esanguratsu bat bere ahalmen grafikoa da. Oso kalitate altuko grafikoak sor daitezke R erabiliz. Dokumentaziorako LaTeX-en oinarritutako formatu propioa du.

erdian|thumb|587x587px

Horrez gain, zenbakizko kalkulurako tresna moduan erabil daiteke R; esparru horretan lan egiteko GNU Octave edota MATLAB tresna espezializatuak bezain eraginkorra izan daiteke. RWeka izeneko interfazea garatu da Weka-rekin lan egin ahal izateko eta horri esker posiblea da *arff* formatuan fitxategiak irakurtzea eta idaztea. Horrek R aberasteko aukera ematen du, Weka plataformako datu meatzaritza algoritmoekin.

## Hedapenak eta paketeak 
Elkarlanean garatutako proiektu irekia da R; erabiltzaileek garatutako funtzio espezifiko berriak paketeetan antolatuz eta argitaratuz R ren oinarrizko konfigurazioa hedatzea lortzen da eta funtzio berriak guztiok atzitzeko moduan jartzen dira. Pakete horiek gehienetan Rn garatzen dira, baina Java, C eta C++ ere erabili izan dira.

R oinarrizko pakete-multzo batekin dator; horietaz aparte beste 11.000 pakete gehigarri baino gehiago daude (2017ko uztailean) CRAN, Bioconductor, Omegahat, GitHub edo bestelako gordailuetan bilduta.

Paketeak hainbat multzotan sailkatuta daude: Finantzak, Genetika, Errendimendu handiko Konputazioa, Ikasketa Automatikoa, Gizarte Zientziak, etab.). Arlo horietan lan egiteko bereziki diseinatu dira R paketeak eta gaur egun gure eskura daude.

Rren beste baliabide batzuk Crantastic (komunitate honek CRAN paketeak ebaluatzen eta errebisatzen ditu) eta R-Forge (Rrako paketeak, softwarea eta proiektuak modu kolaboratiboan garatzeko plataforma) dira. R-Forge-en oraindik garatze-prozesuan eta argitaratu gabe dauden hainbat CRAN beta-pakete daude.

## Paketeen instalazioa eta aktibazioa 
Paketeak instalatzeko ispilua (ingelesezko *mirror*) aukeratu behar da eta bertatik deskargatu.

Analisi espezializaturen bat egiteko behar dugun paketea aldez aurretik instalatuta ez bazegoen edo aktibatu gabe bazegoen, esplizituki egin beharko dugu. Paketeek haien artean mendekotasunak izatea posiblea da. Kasu batzuetan instalazioak berak automatikoki instalatzen ditu mendeko diren gainerako paketeak ere, baina ez beti. Horregatik, interesatzen zaigun paketea instalatzean honakoa idatziko dugu:

```rsplus
install.packages("deldir", dep=T) # deldir paketea mendekotasun guztiekin instalatzeko.
```

Liburutegiak aktibatzeko halako aginduak erabil daitezke:

```rsplus
library("deldir")
library('Benchmarking')
require(maps)
require('plot3D')
```

Komatxo bikoitzak (“ ”) nahiz sinpleak (‘ ’) edo komillarik gabe adieraz daitezke. Erabiliko den liburutegiari deia egiterakoan, aktibatuak izan diren mendekotasunei buruzko xehetasunak agertuko dira.

## Tresna gehigarriak 
### Interfaze Grafikoak eta Editoreak 
Badira Rn lan egiteko bereziki sortutako garapen-ingurune integratuak (IDEak) eta baita Rrekin lan egiteko laguntza eskaintzen duten testu-editoreak ere. Honakoak aipatzeak merezi du:

* Rstudio, Rrako gehien erabiltzen den garapen-ingurune integratua (IDEa).
* Java Gui for R (JGR), Javan oinarritutako R terminal plataforma anitza.
* R Commander (Rcmdr), interfaze grafiko plataforma anitza, Rtik bertatik instala daiteke beste edozein pakete bezala.
* RKWard, KDE-n oinarritua.
* RExcel, Microsoft-en Exceletik R erabiltzeko aukera ematen du.
* Editoreak: Emacs (Emacs Speaks Statistics (ESS) plugin-arekin), Vim (Vim-R plugin-arekin), Eclipse, gedit (RGedit-ekin), Kate, Bluefish

Bestalde, Sweave Rko funtzio bat da, eta horri esker R kodea Latex eta Lyx dokumentuetan txertatu ahal izango da. R kodea exekuta daiteke eta modu dinamikoan posiblea gertatzen da dokumentu eguneratuak sortzea, datu eguneratuetatik abiatuz emaitza eta grafiko eguneratuak sortuz eta txertatuz.

### Script lengoaiak 
Rren funtzionaltasuna atzigarria da hainbat script programazio-lengoaiatatik: Python-en deiak egiteko RPyC erabil daiteke, Perl-en (stadistics::R), Ruby.

## Bestelako aukerak 
### Aukera Libreak 
Rrekin lan egin ordez badira software libre diren beste hainbat aukera ere. Kontuan izan behar da lengoaiak arlo espezializaturen batean lan egiteko bereziki garatuak izan ohi direla. R adibidez biologian, fisiologian edo antzeko arloetan lan egiteko oso aproposa gertatzen da. GNU Octave arlo matematikoan eta bereziki zenbakizko analisiak egiteko oso egokia den bezala, Gretl oso egokia gertatzen da ekonometriaren arloan lan egiteko. Egia esan, gero eta gehiago dira Rren moduko aukera libreak haien ikerketa-lanak aurrera eramateko erabiltzen dituzten lan-taldeak. Arlo batzuk: Ekonometria, Biologia, Edafologia, Topologia, Estatistika. Arlo espezializatu horietan ikertzaileek beren ikerketetan aurrera egin ahala lortutako emaitzak argitaratzen dituzten moduan, garatutako R paketeak partekatu eta komunitate zientifikoaren esku uztea erabakitzen dute kasu askotan. Horrela sortutakoak dira hainbat arlotarako eskuragarri dauden R pakete gehienak.

Hemen Rren beste aukera libre batzuk:

* GNU Octave
* RStudio
* Gretl
* PSPP

### Aukera Pribatiboak 
Aukera libreez aparte, badira haien pareko izan daitezkeen beste aukera pribatibo batzuk ere. Horietako batzuk honakoak dira:

* SPSS
* Mathematica
* MATLAB
* SAS
* Minitab
* Statistica
* Stata
* JMP
* Oracle Data Mining (ODM)

## Erreferentziak 
## Kanpo estekak 
*  The R Project for Statistical Computing (Rren webgune ofiziala).
*  The Comprehensive R Archive Network (CRAN)
*  Dokumentazioa ingelesez (CRAN-eko Documentation > Contributed atalean *Emmanuel Paradis*-en *R for Beginners* eta beste dokumentu asko).
*  R Hasiberrientzat (itzulpena) (Gorka Azkune Galparsoro, Yosu Yurramendi Mendizabal (2005), Udako Euskal Unibertsitatea)
*  R Hasiberrientzat pdf (Gorka Azkune Galparsoro, Yosu Yurramendi Mendizabal (2005), Udako Euskal Unibertsitatea).
*  R gizarte-zientzietarako. Datuen eta eskalen analisia Rcommander-ekin (Elosua, P. (2010) Bilbao, UPV/EHU).
*  R Programming (Wikibook)