R (linguaxe de programación)

**R** é unha linguaxe de programación, coa súa contorna, para a estatística computacional e a produción de gráficos. O seu desenvolvemento comezárono Ross Ihaka e Robert Gentleman en 1995 como unha implementación da linguaxe de programación S. R é un proxecto de GNU. O código fonte de R está escrito en C, Fortran e R. R distribúese baixo a licenza GNU GPL, co cal é de código aberto e libre. Está dispoñible para os sistemas operativos Unix e GNU/Linux, Mac OS X e Windows. Algunhas das características máis relevantes é que se trata dunha linguaxe interpretada e que está orientada a obxectos.

A linguaxe R emprégase amplamente na estatística, na análise e minado de datos e para o desenvolvemento de software estatístico. Recentes estudos e enquisas mostraron que a popularidade de R aumentou nos últimos anos e que se colocou xa como a quinta linguaxe máis popular entre os desenvolvedores. A bioinformática, a investigación biomédica, ecoloxía e as matemáticas financeiras, entre outros campos de *big data*, é onde se está a empregar máis. R cítase de xeito común como a *lingua franca* da ciencia.

Ademais de liña de comandos, R pódese empregar en varias interfaces gráficas.

No repositorio CRAN atópanse máis de 8 mil librarías, ou paquetes de funcións, que amplían a capacidade funcional da base de R. R pode integrarse con distintas bases de datos, como MySQL, MariaDB, SQLite, PostgreSQL ou MongoDB. Existen librarías que facilitan a súa utilización desde linguaxes de programación interpretados como Perl e Python ou en linguaxes de código compilado, como C ou Fortran. O proxecto máis coñecido desenvolvido sobre R é Bioconductor, que conta con máis de 1200 librarías de R e que permite o tratamento de datos de secuenciación xenómica masiva.

## Historia 
R é unha implementación da linguaxe de programación S con características inspiradas na semántica de ámbito léxico que ten Scheme. A linguaxe S creáraa John Chambers cando traballaba en Bell Labs. Inda agora cando as dúas linguaxes teñen importantes diferenzas, o código S é executable sen cambios en R.

R creárona Ross Ihaka e Robert Gentleman desde o departamento de estatística da Universidade de Auckland, Nova Celandia. Desde mediados de 1997 houbo un grupo activo de desenvolvedores traballando no código de R en repositorios CVS de arquivos. O desenvolvemento manteno agora o equipo *R Development Core Team*. É apoiado pola *Fundación R*, que se creou no 2002 con tal fin. J. Chambers, creador de S, é membro do equipo de traballo do R Core Team. O nome de R provén das iniciais dos nomes dos dous creadores e seguindo o xogo co nome da linguaxe S. O proxecto concibiuse no 1992 e lanzou a súa primeira versión en 1994. A primeira versión beta foi no 2000.

## Fitos 
En *R News* do CRAN están recompilados todos os cambios que se fixeron na linguaxe. Os principais fitos e cambios na linguaxe foron estes:

## Capacidades na estatística 
R, coas súas librerías, dá soporte para multitude de técnicas estatísticas e de representación gráfica. Isto pasa por modelaxe lineal e non lineal, test estatísticos clásicos, análise de series temporais, clasificación ou clustering, entre outros. Engadidos e novas funcións son fáciles de engadir ao núcleo de R. Isto é grazas a que ten unha comunidade activa de desenvolvedores que depositan novas función en forma de paquetes, que se poden instalar e engadir ao núcleo de R. Case todas as funcións estándar de R escríbense nesta linguaxe así que os usuarios poden comprender a escolleita de algoritmos que fan. Para procesos de altos requirimentos, pódense ligar, e chamar durante a execución, código escrito en C, C++ e Fortran.

Os usuarios avanzados poden escribir e chamar a código escrito en C, C++, Java, .NET ou Python e manipular os obxectos directamente en R . R é unha linguaxe altamente ampliable polos paquetes desenvoltos na comunidade, co fin de engadir novas funcionalidades para casos específicos ou orientadas a campos de aplicación concretos.

Grazas á herdanza de S, R ten un maior enfoque en capacidades de programación orientada a obxectos ca outras linguaxes de programación desenvoltas para a estatística. Ampliar as funcionalidade de R é sinxelo xa que ten regras dunha semántica léxica.

Outro punto destacable de R, desde funcións do núcleo ou usando paquetes, é a súa capacidade de representación gráfica; que permite obter gráficos de alta calidade e axeitados para publicacións impresas ou dixitais de calidade e mesmo con símbolos matemáticos incluídos. Ten a posibilidade de crear gráficos estáticos ou dinámicos, en 2 ou 3 dimensións e para crear ou asociar datos a mapas cartográficos.

R ten capacidade de creación de documentos, para resumo de análises, estáticos e dinámicos. O formato *Rd* de R emprégase para fornecer documentación comprensible, en copia local ou en rede. Emprega un formato de documentación semellante a LaTeX .

## Paquetes en CRAN 
A funcionalidade de R pódese ampliar usando *paquetes*, que son bloques de código de R creados por desenvolvedors co fin de engadir novas funcións á base da linguaxe. Os paquetes inclúen funcións de R reutilizables, documentación que describe a súa función, detalles de como usalo, código de exemplo de uso e datos de proba. Os paquetes engaden capacidades extra de, como exemplo, técnicas estatísticas, representacións gráficas, importación e tratamento de datos e xeración de informes, entre outros. Os paquetes adóitanse crear en R e ás veces en Java, C, C++ ou Fortran.

Coa instalación inicial de R instálanse un grupo de paquetes con funcións básicas, que suman funcións ao núcleo da linguaxe. Ademais destes, existen máis de 7,801 paquetes adicionais nun repositorio público: a *Comprehensive R Archive Network (CRAN)*. Este é o principal repositorio de R e o que mantén a Fundación e os desenvolvedores voluntarios de R. Actualmente CRAN conta con 147 mirrors (repositorios réplica) de 49 estados. Dous deles son da oficina galega de software libre CIXUG e alóxanse na Universidade da Coruña. Microsoft R Open distribúe un mirror con versións estáticas de CRAN e denomínao MRAN.

Outros repositorios de R son r-forge, Bioconductor e Omegahat. R-Forge é unha plataforma central para a colaboración no desenvolvemento de paquetes e para proxectos de software, ou similares, relacionado dalgún xeito con R. R-Forge aloxa moitos paquetes en fase de probas (en beta) ou en desenvolvemento para logo enviar aos paquetes de CRAN. O proxecto Bioconductor aloxa a paquetes que cobren os procesos de análise de datos xenómicos de secuenciación, como os obtidos con micromatrices de ADN de Affymetrix e cDNA. Ten un enfoque de análise de datos orientada a obxectos aplicada aos datos obtidos en métodos de secuenciación masiva. Bioconductor permite a análise de micromatrices de ADN, sequenciación ou polimorfismos dun só nucleótido (SNPs), entre outros. A versión 3.3 contou con 1211 paquetes.

Na sección de *Task Views* (visor de tarefas)  da web de CRAN hai listas de grupos de paquetes que abranguen diferentes tarefas e campos de aplicación da linguaxe. Arestora hai 33; son grupos que permiten o uso de R para a inferencia bayesiana, a econometría e finanzas, as ciencias sociais, o procesado da linguaxe natural, as series temporais, os datos espaciais e espazo-temporais, a quimiometría e física computacional, a xenética e filoxenética, a análise de datos ambientais e ecoloxía, a computación de alto rendemento ou reproducibilidade en ciencia.

Repositorios públicos de git, como github, empréganse para o desenvolvemento de paquetes de R.

## Interfaces 
### Interfaces gráficas 
miniatura|*R Commander*. Conta coa interface gráfica en galego.
Algunhas interfaces de traballo para R son :
* **Architect** – interface de desenvolvemento multiplataforma para análise de datos científicos en Eclipse e StatET.
* **Deducer** – GUI para análise de datos guiado por menús. 
* **Java GUI for R (JGR)** – editor e terminal de R multiplataforma baseado en Java.
* **Rattle GUI** – GUI multiplataforma baseada RGtk2 e deseñada para a minaría de datos.
* **R Commander** – editor e terminal de R multiplataforma baseado tcltk, con engadidos para Rcmdr. 
* **Revolution R Productivity Environment (RPE)** – IDE privativa desenvolta sobre Visual Studio-based IDE e parte de *Revolution R Enterprise* 
* **R-GUI** - GUI para R. 
* **RKWard** – GUI e IDE para R do proxecto KDE.
* **RStudio** – editor e terminal de R multiplataforma de código libre, permite a execución en servidores Linux remotos . 
* **Tinn-R** - GUI para R.miniatura|*RKWard*. Conta coa interface gráfica en galego.

### Editores e IDEs 
A lista de editores de texto que teñen un soporte integrado de R conta con: Eclipse (StatET), Emacs (Emacs Speaks Statistics), LyX (con módulos para knitr e Sweave), Vim, jEdit, Kate, Sublime Text, TextMate, Atom, WinEdt (libraría R RWinEdt), Notepad++, Visual Studio e Architect.

### Scripting 
As funcionalidades de R están dispoñibles para empregar a canda outras linguaxes de programación como Python , Perl, Ruby, F# e Julia. O scripting para chamar a outras linguaxes pódese facer en R empregando interfaces como *littler* .

## Notas 
## Véxase tamén 
### Outros artigos 
* GNU Octave
* Maxima
* Scilab

### Ligazóns externas 
* O proxecto R
* The R Reference Manual - Base Package by the R Development Core Team. ISBN 0-9546120-0-0 (vol. 1), ISBN 0-9546120-1-9 (vol. 2)
* Colección librerías en CRAN (Comprehensive R Arquive Network)
* R-Wiki
* Interface Web para R
* R Graph Gallery