R (linguaxe de programación)

linguaxe de programación
(Redirección desde «Linguaxe de programación R»)

R é unha linguaxe de programación, coa súa contorna, para a estatística computacional e a produción de gráficos[3]. O seu desenvolvemento está apoiado e é xestionado pola Fundación para a Estatística Computacional R[3][4]. O seu desenvolvemento comezárono Ross Ihaka e Robert Gentleman en 1995 como unha implementación[5] da linguaxe de programación S[6]. R é un proxecto de GNU[7][8]. O código fonte de R está escrito en C, Fortran e R[9]. 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.

R
Paradigmamultiparadigma, orientado a obxectos, imperativa, funcional, procedural, reflexiva
Data1993
DeseñadorRoss Ihaka e Robert Gentleman
DesenvolvedorR Core Team
Última versión3.4.2 (Short Summer)[1]
Tipo de datodinámica
Postas en funcionamentoAgosto de 1993
Influído porS, Scheme, Common Lisp, XLispStat
InfluíuJulia
Sistema operativoMultiplataforma (GNU/Linux, Mac OS X, Windows)
LicenzaGNU GPL v2[2]
Webwww.r-project.org

A linguaxe R emprégase amplamente na estatística, na análise e minado de datos e para o desenvolvemento de software estatístico[10][11]. Recentes estudos e enquisas mostraron que a popularidade de R aumentou nos últimos anos[12][13][14][15] e que se colocou xa como a quinta linguaxe máis popular entre os desenvolvedores[16]. 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[17].

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

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[19][20]. 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[21][22].

Historia editar

R é unha implementación da linguaxe de programación S con características inspiradas na semántica de ámbito léxico que ten Scheme[23]. 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.[24]

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

Fitos editar

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

Lanzamento Data Descrición
0.16 Última versión de probas (alfa) que desenvolveron Ihaka e Gentleman, con algunha contribución menor doutros. Implementouse os aspectos fundamentais do Libro branco de S (véxase a historia da S). As listas de correo abríronse o 1 de abril de 1997.
0.49 23/4/1997 Esta é a versión máis antiga das que se conservan en CRAN[36]. CRAN estréase este día, contando con tres mirrors e con 12 paquetes[37]. Libéranse as versións alfa de R para Microsoft Windows e Mac OS Clásico.
0.60 5/12/1997 R convértese en parte do Proxecto GNU. O código alóxase e mantense usando CVS.
0.65.1 7/10/1999 Primeiras versións de updates.packages() e install.packages(), que serven para descargar e instalar paquetes de CRAN[38].
1.0 29/2/2000 Lánzase a primeira versión que os desenvolvedores consideraron estable e lista para o uso[39]
1.4 19/12/2001 Impleméntanse os métodos S4 e a primeira versión de R para Mac OS X.
2.0 4/10/2004 Introdúcense os deseños de carga aprazada, que facilitan rápidas execucións con menor custo para a memoria do sistema.
2.1 18/4/2005 Soporte do sistema de codificación UTF-8 e inicio do proceso de internacionalización e localización a distintas linguas.
2.11 22/4/2010 Soporte para sistemas Windows de 64 bits.
2.13 14/4/2011 Engádese unha función de compilación que acelera a función de conversión a código byte.
2.14 31/10/2011 Introdúcense a obriga de espazo de nomes nos paquetes. Engádese outro paquete parallel.
2.15 30/3/2012 Novas funcións de balance. Mellórase a velocidade de serialización de vectores longos.
3.0 03/04/2013 Impleméntanse os vales numéricos de valores de 231 e de aínda máis en sistemas 64 bits.

Capacidades na estatística editar

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++,[40] Java,[41] .NET[42] ou Python e manipular os obxectos directamente en R [43]. 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[44].

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[45].

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 [46].

Paquetes en CRAN editar

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[47]. 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[48][49]. Microsoft R Open distribúe un mirror con versións estáticas de CRAN e denomínao MRAN[50].

Outros repositorios de R son[51] r-forge[52], Bioconductor[53] e Omegahat[54]. 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[55]. 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[56].

Na sección de Task Views (visor de tarefas) [57] 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[58][59].

Interfaces editar

Interfaces gráficas editar

 
R Commander. Conta coa interface gráfica en galego.

Algunhas interfaces de traballo para R son [60]:

  • Architect – interface de desenvolvemento multiplataforma para análise de datos científicos en Eclipse e StatET.
  • Deducer[61] – 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 [62]
  • 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 [63].
  • Tinn-R - GUI para R.
     
    RKWard. Conta coa interface gráfica en galego.

Editores e IDEs editar

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

Scripting editar

As funcionalidades de R están dispoñibles para empregar a canda outras linguaxes de programación como Python [70], Perl[71], Ruby[72], F#[73] e Julia[74]. O scripting para chamar a outras linguaxes pódese facer en R empregando interfaces como littler [75].

Notas editar

  1. "R News". CRAN. Consultado o 23 de novembro de 2017. 
  2. R - Licenza GPLv2
  3. 3,0 3,1 Hornik, Kurt (3 de outubro de 2016). "R FAQ - What is R?". The Comprehensive R Archive Network. Consultado o 3 de outubro de 2016. 
  4. R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL http://www.R-project.org/.
  5. Nas ciencias computacionais, as implementacións son os procesos de elaboración de especificacións técnicas ou de algoritmos como unha parte máis dun aplicativo, un compoñente de software ou outra peza de sistema. As implementacións aplícanse desenvolvendo e usando linguaxes de programación.
  6. R vs Python for Data Science: The Winner is … Martijn Theuwissen, DataCamp. Xuño de 2005. Consultado o 3 de outubro de 2016.
  7. "GNU R". Free Software Foundation (FSF) Free Software Directory. 19 de xullo de 2010. Consultado o 3 de outubro de 2016. 
  8. R Project (n.d.). "What is R?". Consultado o 3 de outubro de 2016. 
  9. "Wrathematics" (27 de agosto de 2011). "How Much of R Is Written in R". librestats. Consultado o 3 de outubro de 2016. 
  10. Fox, John & Andersen, Robert (xaneiro de 2005). "Using the R Statistical Computing Environment to Teach Social Statistics Courses" (PDF). Department of Sociology, McMaster University. Arquivado dende o orixinal (PDF) o 11 de xuño de 2016. Consultado o 3 de outubro de 2016. 
  11. Vance, Ashlee (1 de xaneiro de 2006). "Data Analysts Captivated by R's Power". New York Times. Consultado o 3 de outubro de 2016. R tamén é o nome da popular linguaxe que están a empregar un número crecente de analistas de datos de institucións e empresas. Estase a converter na súa lingua franca... 
  12. David Smith (2012); R Tops Data Mining Software Poll Arquivado 27 de decembro de 2016 en Wayback Machine., Java Developers Journal, 31 de maio de 2012
  13. Karl Rexer, Heather Allen, e Paul Gearan (2011) 2011 Data Miner Survey Summary Arquivado 09 de setembro de 2017 en Wayback Machine., presentado en Predictive Analytics World, outubro de 2011.
  14. Robert A. Muenchen (2012). "The Popularity of Data Analysis Software". 
  15. Tippmann, Sylvia (29 de decembro 2014). "Programming tools: Adventures with R". Nature (517): 109–110. doi:10.1038/517109a. 
  16. Cass, Stephen (2016-07-26). "The 2016 Top Programming Languages". IEEE Spectrum: Technology, Engineering, and Science News. Consultado o 2016-10-03. 
  17. "The rise of R as the language of analytics". Revolutions. Consultado o 2016-10-03. 
  18. "7 of the Best Free Graphical User Interfaces for R". linuxlinks.com. Arquivado dende o orixinal o 13 de outubro de 2016. Consultado o 5 de outubro de 2016. 
  19. "How many packages are there really on CRAN?". Revolutions. Consultado o 3 de outubro de 2016. 
  20. "On the growth of CRAN packages". R-bloggers. 2016-04-15. Consultado o 3 de outubro de 2016. 
  21. Bioconductor - Open Source Software for Bioinformatics
  22. "Bioconductor - BiocViews". Consultado o 3 de novembro de 2016. 
  23. Morandat, Frances; Hill, Brandon; Osvald, Leo; Vitek, Jan (2012). "Evaluating the design of the R language: objects and functions for data analysis" (PDF). ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming. Arquivado dende o orixinal (PDF) o 11 de outubro de 2017. Consultado o 4 de outubro de 2016. 
  24. "R: What is R?". R-Project. Consultado o 4 de outubro de 2016. 
  25. Gentleman, Robert (9 de decembro de 2006). "Individual Expertise profile of Robert Gentleman". Arquivado dende o orixinal o 23 de xullo de 2011. Consultado o 4 de outubro de 2016. 
  26. Kurt Hornik e Friedrich Leisch. Editorial. The Newsletter of the R Project Volume 1/1, xaneiro de 2001. RNews Volume 1/1, xaneiro de 2001
  27. Literalmente, o equipo de desenvolvemento do núcleo de R
  28. r-project.org: The R Foundation
  29. Statutes of “The R Foundation for Statistical Computing” 10 de setembro de 2002. Vienna, Austria. Statutes of R Foundation (pdf)
  30. R-project.org: Board and Auditors
  31. Kurt Hornik. The R FAQ: Why is R named R?. ISBN 3-900051-08-9. Consultado o 9 de outubro de 2016. 
  32. "R : Past and Future History -- A Free Software Project". cran.r-project.org. Consultado o 9 de outubro de 2016. 
  33. "Over 16 years of R Project history". Revolutions. Consultado o 2016-05-30. 
  34. Ihaka, Ross. "The R Project: A Brief History and Thoughts About the Future" (PDF). stat.auckland.ac.nz. Consultado o 2016. 
  35. "R News". cran.r-project.org. Consultado o 8 de outubro de 2016. 
  36. "Index of /src/base/R-0". 
  37. "ANNOUNCE: CRAN". 
  38. https://cran.r-project.org/src/base/NEWS.0
  39. Peter Dalgaard. "R-1.0.0 is released". Consultado o 9 de outubro de 2016. 
  40. Eddelbuettel, Dirk; Francois, Romain (2011). "Rcpp: Seamless R and C++ Integration". Journal of Statistical Software 40 (8). 
  41. Temple Lang, Duncan (6 de novembro de 2010). "Calling R from Java" (PDF). Nuiton. Consultado o 5 de outubro de 2016. 
  42. .NET Framework
  43. "SAS vs. R"
  44. Jackman, Simon (Spring 2003). "R For the Political Methodologist" (PDF). The Political Methodologist (Political Methodology Section, American Political Science Association) 11 (1): 20–22. Arquivado dende o orixinal (PDF) o 2006-07-21. Consultado o 9 de outubro de 2016. 
  45. "CRAN Task View: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization". The Comprehensive R Archive Network. Arquivado dende o orixinal o 26 de setembro de 2016. Consultado o 4 de outubro de 2016. 
  46. "Rd format". hep.by. Arquivado dende o orixinal o 13 de setembro de 2018. Consultado o 5 de outubro de 2016. 
  47. CRAN Repository Policy. Version Revision 3553. CRAN Repository Maintainers. Consultado o 4 de outubro de 2016.
  48. CRAN Mirrors. Consultado o 6 de outubro de 2016
  49. Servidor de réplicas do CIXUG ftp.cixug.es/CRAN/
  50. "About Microsoft R Open: The Enhanced R Distribution · MRAN". Arquivado dende o orixinal o 06 de outubro de 2016. Consultado o 5 de outubro de 2016. 
  51. "Exploring Package Repositories - R in a Nutshell, 2nd Edition [Book]". Consultado o 5 de outubro de 2016. 
  52. r-forge.r-project.org
  53. www.bioconductor.org/
  54. www.omegahat.net/ The Omega Project for Statistical Computing
  55. "Orchestrating high-throughput genomic analysis with Bioconductor". Nature methods (Nature Publishing Group) 12 (2): 115–121. 2015. doi:10.1038/nmeth.3252. 
  56. Bioconductor 3.3 Released. Abril de 2016
  57. "CRAN Task Views". cran.r-project.org. Consultado o 5 de outubro de 2006. 
  58. "Git and GitHub · R packages". Arquivado dende o orixinal o 10 de outubro de 2016. Consultado o 2016-10-05. 
  59. "githubinstall: New R Package for Easy to Install R Packages on GitHub". R-bloggers. 2016-06-14. Consultado o 2016-10-05. 
  60. Unha edición especial de Journal of Statistical Software describe as diferentes interfaces dispoñibles para R: ""Valero-Mora, Pedro. "Graphical User Interfaces for R". Journal of Statistical Software (by Pedro M. Valero-Mora, and Ruben Ledesma). Consultado o 2014. "
  61. "Deducer Manual". www.deducer.org. Arquivado dende o orixinal o 24 de outubro de 2016. Consultado o 9 de outubro de 2016. 
  62. "R PEnterprise DevelopR". Revolution Analytics. Arquivado dende o orixinal o 18 de abril de 2014. Consultado o 3 de outubro de 2016. 
  63. J. J. Alaire and colleagues. "RStudio: nova IDE para R". Consultado o 3 de outubro de 2016. 
  64. Stephan Wahlbrink. "StatET: Eclipse based IDE for R". Arquivado dende o orixinal o 26 de setembro de 2016. Consultado o 3 de outubro de 2016. 
  65. Jose Claudio Faria. "R syntax". Consultado o 3 de outubro de 2016. 
  66. "Syntax Highlighting". Kate Development Team. Arquivado dende o orixinal o 07 de xullo de 2008. Consultado o 3 de outubro de 2016. 
  67. "NppToR: R in Notepad++". sourceforge.net. 8 de maio de 2013. Consultado o 3 de outubro de 2016. 
  68. "R Tools for Visual Studio". www.visualstudio.com. Consultado o 2016-07-18. 
  69. "Architect: integrated development environment for data science". Open Analytics. Arquivado dende o orixinal o 06 de xaneiro de 2017. Consultado o 2015-07-30. 
  70. Gautier, Laurent (21 de outubro de 2012). "A simple and efficient access to R from Python". Consultado o 5 de outubro de 2016. 
  71. Florent Angly. "Statistics::R - Perl interface with the R statistical program - metacpan.org". 
  72. alexgutteridge. "GitHub - alexgutteridge/rsruby: Ruby - R bridge.". GitHub. 
  73. BlueMountain Capital. "F# R Type Provider". 
  74. Julia
  75. Eddelbuettel, Dirk (14 de xullo de 2011). "littler: a scripting front-end for GNU R". Consultado o 2013-09-18.  https://github.com/eddelbuettel/littler

Véxase tamén editar

Outros artigos editar

Ligazóns externas editar