R (lenguaje de programación)

R
clase de idioma paradigma múltiple
tipo de ejecución interpretado
Apareció en 1993 [1]
Autor Ross Ihaka
Robert Caballero
Liberar 4.2.1 (23 de junio de 2022 ) ( 2022-06-23 )
sistema de tipos dinámica
sido influenciado S , esquema
Licencia GNU GPL 2 [3]
Sitio web r-proyecto.org
sistema operativo GNU/Linux [4] , BSD [4] , macOS [4] y Microsoft Windows [4]
 Archivos multimedia en Wikimedia Commons

R  es un lenguaje de programación para procesamiento de datos estadísticos y gráficos, así como un entorno informático gratuito y de código abierto bajo el Proyecto GNU . El lenguaje fue creado como similar al lenguaje S desarrollado en Bell Labs , y es su implementación alternativa, aunque existen diferencias significativas entre los lenguajes, pero en su mayor parte el código en el lenguaje S funciona en el entorno R. Inicialmente, R fue desarrollado por Ross Aihaka ( ing.  Ross Ihaka ) y Robert Gentleman ( ing.  Robert Gentleman ) (la primera letra de sus nombres es R); el lenguaje y el entorno son mantenidos y desarrollados por la R Foundation [5] .

Ampliamente utilizado como software estadístico para el análisis de datos y se ha convertido en el estándar de facto para los programas estadísticos [6] .

El idioma y el entorno están disponibles bajo GNU GPL ; distribuidos en forma de códigos fuente, así como aplicaciones compiladas para una serie de sistemas operativos: FreeBSD , Solaris [7] y otras distribuciones de Unix y Linux , Windows , macOS .

R usa una interfaz de línea de comandos , aunque hay varias interfaces gráficas de usuario disponibles , como el paquete R Commander , RKWard , RStudio , Weka , Rapid Miner , KNIME e integraciones en suites de oficina.

En 2010, R entró en la lista de ganadores del concurso de la revista Infoworld en la nominación al mejor software de desarrollo de aplicaciones de código abierto [8] .

Características

R es un lenguaje de programación interpretado, la principal forma de trabajar con él es el intérprete de comandos. El lenguaje distingue entre mayúsculas y minúsculas, en términos de sintaxis es similar, por un lado, a los lenguajes funcionales como Scheme , por otro lado, a los típicos lenguajes de script modernos , con una sintaxis simple y un pequeño conjunto de básicos. estructuras Lenguaje de objetos: cualquier objeto de programa en él tiene un conjunto de atributos, una lista con nombre de valores que lo definen.

El lenguaje admite un conjunto mínimo de tipos de datos primitivos: carácter (carácter), numérico (numérico), lógico (lógico) y complejo (complejo). Las variables numéricas, además de los números ordinarios, pueden tomar los valores especiales NaN (No es un número - "no es un número") e Inf (Infinito - "infinito"). El infinito (positivo o negativo) se obtiene cuando el resultado del cálculo supera los límites del rango representado por la implementación, NaN, durante operaciones con un resultado indefinido. Además de estos, existe otro valor especial muy importante, NA (No Disponible). Se puede utilizar para corregir el hecho de que por alguna razón no se obtuvo el valor correspondiente involucrado en los cálculos (una situación bastante común en los cálculos estadísticos cuando, debido a fallas en la recolección de datos, algunas observaciones quedan sin resultados).

Los valores de tipos primitivos se pueden combinar en vectores (vector), listas (lista), matrices o matrices (matriz), incluidas las multidimensionales; estos tipos combinados almacenan conjuntos de datos del mismo tipo primitivo. Además, el lenguaje contiene el concepto de factores (factor): conjuntos de datos categóricos o de escala que toman un conjunto de valores estrictamente definido. Finalmente, se pueden crear tablas (marcos de datos), estructuras de datos que almacenan un conjunto de parámetros (características) diferentes (y de diferentes tipos) para cada fila (individual). Una característica de R es que las operaciones con vectores y matrices son compatibles a nivel del propio lenguaje, como, por ejemplo, en APL .

Existe una operación para extraer y escribir datos (análoga a una asignación) " <-", así como las operaciones habituales para trabajar con datos, incluidas las aritméticas. El acceso por índice a los elementos de vectores y matrices se realiza mediante corchetes, acceso a los atributos de listas, a través del operador " $". Hay un conjunto mínimo de construcciones de programación imperativa comunes: operador condicional if, bucles whiley for. Las expresiones en R pueden describirse como objetos separados y evaluarse según sea necesario. La descripción de funciones se basa en el mismo mecanismo. Hay funciones integradas para aplicar expresiones y funciones a vectores y matrices.

Las funciones de R se pueden agrupar en paquetes: módulos cargables que se conectan a cualquier programa y proporcionan las funciones informáticas combinadas en ellos. Los paquetes para R pueden desarrollarse en otros lenguajes de programación, incluido C, lo que permite, por un lado, compensar los recursos visuales limitados del propio lenguaje R y, por otro lado, lograr un alto rendimiento computacional si es necesario.

El lenguaje en sí tiene medios bastante limitados y no muy convenientes para describir datos, pero esto se compensa con la presencia de herramientas de biblioteca que le permiten cargar conjuntos de datos presentados en la mayoría de los formatos abiertos y propietarios como tablas R. Por lo tanto, las tablas en formato de texto sin formato, las tablas de Excel de varias versiones, los datos en formato CSV , XML y muchos otros se pueden cargar fácilmente en R.

En general, como lenguaje de programación, R es bastante simple e incluso primitivo. Su mayor fortaleza es su capacidad de expandirse indefinidamente con paquetes. La distribución base de R incluye un conjunto básico de paquetes y, en total, a partir de 2019, hay más de 15 316 paquetes disponibles [9] . Casi todas las herramientas relevantes de la computación estadística universal están implementadas en R, como el análisis de regresión y el análisis de series temporales , así como muchos algoritmos específicos para resolver problemas e investigaciones altamente especializados en ciertas áreas.

Otra característica del lenguaje es la capacidad de crear gráficos de nivel tipográfico de alta calidad que pueden exportarse a formatos gráficos comunes y usarse para presentaciones o publicaciones. Hay paquetes disponibles que vinculan R con marcos GUI (por ejemplo, basados ​​en Tcl/Tk ) y le permiten crear utilidades de análisis estadístico especializadas con una interfaz gráfica de usuario y mostrar resultados en forma de gráficos y cuadros.

Ejemplos

Sintaxis básica

> x <- c ( 1 , 2 , 3 , 4 , 5 , 6 ) # Crear una colección ordenada > y <- x ^ 2 # Elementos cuadrados de x > imprimir ( y ) # Imprimir y [ 1 ] 1 4 9 16 25 36 > media ( y ) # Calcular la media aritmética de y; el resultado es el número [ 1 ] 15.16667 > var ( y ) # Calcular la varianza [ 1 ] 178.9667

Promedio de grado de posgrado

# Coloque una lista de todas las calificaciones en la variable a: 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 ) # Ponga el número de calificaciones en la variable n: longitud ( a ) -> n # Puntuación media: m <- media ( a ) # Tabla (horizontal) contando el número de calificaciones: t <- table ( a ) # Convertir a un formato de datos más conveniente (tabla vertical): f <- as.data.frame ( t ) # Calcula el porcentaje y escríbelo en la tercera columna: mapply ( function ( r ) r * 100 / n , f [, 2 ]) -> f [, 3 ] # Encabezados de columna: colnames ( f ) <- c ( "Puntuación" , "Cantidad" , "%" ) # Salida de resultados: a n m f

Resultado:

[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 | salida a (38 números de 41 caben en la cadena) [39] 4 5 5 | (tres números restantes) [1] 41 | salida f [1] 4 | salida m Estimación No. % | 1ra columna - número de fila en la tabla 1 3 12 29.26829 | 2ª columna - tipo de evaluación ("3"/"4"/"5") 2 4 17 41.46341111 | 3ra columna - número de calificaciones 3 5 12 29.26829 | 4ta columna - porcentaje de calificaciones

Herramientas

Se han desarrollado varias interfaces gráficas para facilitar el trabajo con R, incluidas RStudio , JGR , RKWard , SciViews-R , Statistical Lab , R Commander , Rattle y el paquete de software Shiny .

Además, varios editores de texto y código ofrecen modos especiales para trabajar con R, en particular ConTEXT , Emacs ( Emacs Speaks Statistics ), jEdit , Kate , Notepad++ , Syn , TextMate , Tinn-R , Vim , Bluefish , WinEdt (con paquete RWinEdt), Gedit (con el paquete rgedit/gedit-r-plugin). Hay un complemento R especializado para el entorno de desarrollo de Eclipse ; Se puede acceder a las funciones y el tiempo de ejecución de R desde Python usando el paquete RPy; Se puede trabajar con R desde el paquete econométrico de Gretl .

Comercialización

Revolution Analytics , fundada en 2007 y adquirida por Microsoft en 2015, basó todo su negocio en la comercialización del lenguaje de programación R, en su paquete comercial Revolution R , componentes tales (no distribuidos con la versión gratuita del lenguaje) como ParallelR (soporte para runtime multithreading), R Productivity Environment ( entorno de desarrollo integrado ), RevoScaleR (soporte para procesamiento paralelo masivo en el marco del concepto de " big data "), RevoDeployR , bibliotecas para integración con servicios web, soporte para SAS Institute formatos de paquetes estadísticos [10] .

En octubre de 2011, Oracle Corporation lanzó Big Data Appliance  , un clúster NoSQL de servidores de procesamiento paralelo masivo con herramientas de software integradas basadas en el lenguaje R y Apache Hadoop [11] , y en febrero de 2012, el lenguaje se incorporó a la base de datos Oracle [ 12] . En 2011 se implementó el análisis paralelo de masas por medio de R en los complejos hardware-software Netezza de IBM Corporation [13] [14] ; más tarde, el idioma se admitió en el paquete de software y hardware de SAP Hana .

El lenguaje R también es compatible con los entornos de software comerciales Tibco Spotfire , SPSS (a partir de la versión 16.0) [15] , Statistica (a partir de la versión 9.0), Platform Symphony , Power BI , SAS , Tableau .

Grúa

R y los paquetes adicionales se distribuyen a través de CRAN (acrónimo de Comprehensive R Archive Network ). A fines de la década de 2010, más de 60 espejos CRAN están disponibles en el mundo, el nodo principal se encuentra en Viena ( Austria ) [16] .

Boletín R

The R Journal [17] , una revista informativa de distribución gratuita que se publica dos o tres veces al año, incluye artículos sobre procesamiento e ingeniería de datos estadísticos, dirigidos tanto a usuarios del lenguaje como a desarrolladores de R. Desde enero de 2001 hasta octubre de 2008, se publicó como boletín R Noticias [18] .

Conferencias

Una de las conferencias de idiomas más populares es useR! ( The R User Conference ), que se realiza anualmente desde 2004 , reúne a expertos en diversos campos.

Desde 2009, cada primavera en Chicago , se lleva a cabo una conferencia dedicada a la aplicación de R en finanzas ( R/Finance: Applied Finance with R ). En 2013 se llevó a cabo la primera conferencia dedicada al uso de R en seguros ( R in Insurance ).

Notas

  1. A Brief History Archivado el 14 de febrero de 2012 en Wayback Machine R: Past and Future History, Ross Ihaka, Departamento de Estadística, Universidad de Auckland, Auckland, Nueva Zelanda, disponible en el sitio web de CRAN
  2. 1 2 R: un lenguaje para gráficos y análisis de datos
  3. https://www.r-project.org/about.html
  4. 1 2 3 4 Directorio de software libre
  5. R: La Fundación R. Consultado el 28 de octubre de 2016. Archivado desde el original el 25 de mayo de 2016.
  6. Teaching-with-R.pdf Archivado el 11 de junio de 2016 en Wayback Machine . 
  7. R-Project en Solaris  (enlace descendente)  (enlace descendente desde 13-05-2013 [3461 días])
  8. InfoWorld Bossie Awards 2010 Archivado el 11 de septiembre de 2014.
  9. Paquetes aportados por CRAN . cran.r-project.org. Consultado el 8 de diciembre de 2019. Archivado desde el original el 13 de marzo de 2016.
  10. 'Red Hat para las estadísticas' se enfrenta cara a cara con SAS . Consultado el 29 de septiembre de 2017. Archivado desde el original el 7 de julio de 2017.
  11. Oracle lanza su propio NoSQL y Hadoop . Consultado el 29 de septiembre de 2017. Archivado desde el original el 7 de julio de 2017.
  12. Prickett Morgan, Timothy Oracle mete el lenguaje de estadísticas R en la base de datos  (ing.)  (enlace no disponible) . El Registro (10 de febrero de 2012). Consultado el 10 de febrero de 2012. Archivado desde el original el 3 de junio de 2012.
  13. Harris, Derrick . IBM crea Big Data Frankenstein con Netezza-R Fusion  (inglés) , The New York Times  (2011-03-141). Consultado el 19 de noviembre de 2011.
  14. Rosenberg, Dave El código abierto 'R' obtiene la integración de Hadoop  (inglés)  (enlace no disponible) . cnet . CBS . Consultado el 19 de noviembre de 2011. Archivado desde el original el 17 de febrero de 2012.
  15. Asuntos RSS . Consultado el 19 de noviembre de 2011. Archivado desde el original el 2 de abril de 2012.
  16. Nodo principal de CRAN . Consultado el 7 de abril de 2007. Archivado desde el original el 5 de enero de 2008.
  17. Revista R. Fecha de acceso: 30 de diciembre de 2010. Archivado desde el original el 17 de febrero de 2010.
  18. Noticias de CRAN:R . Consultado el 7 de abril de 2007. Archivado desde el original el 28 de mayo de 2007.

Literatura

  • Roberto Kabakov. R en acción = R en acción. - DMK-Prensa , 2014. - 588 p. — ISBN 978-5-947060-077-1 .
  • Hadley Wickham, Garrett Growlmund. R para ciencia de datos: visualizar, modelar, transformar, ordenar e importar datos. - Williams , 2017. - 592 págs. - ISBN 978-5-9909446-8-8 , 978-1-491-91039-9.
  • Norman Matloff El arte de la programación en R. Sumérgete en Big Data. = El arte de la programación R: un recorrido por el diseño de software estadístico. . -Pedro, 2019. - 416 p. -ISBN 978-5-4461-1101-5.

Enlaces