stringtranslate.com

R (lenguaje de programación)

R es un lenguaje de programación para computación estadística y visualización de datos . Ha sido adoptado en los campos de minería de datos , bioinformática y análisis de datos . [8]

El lenguaje principal de R se ve ampliado por una gran cantidad de paquetes de extensión , que contienen código reutilizable, documentación y datos de muestra.

El software R es software de código abierto y gratuito . Tiene la licencia del Proyecto GNU y está disponible bajo la Licencia Pública General GNU . [3] Está escrito principalmente en C , Fortran y el propio R. Se proporcionan ejecutables precompilados para varios sistemas operativos .

Como lenguaje interpretado , R tiene una interfaz de línea de comandos nativa . Además, hay disponibles múltiples interfaces gráficas de usuario de terceros , como RStudio , un entorno de desarrollo integrado , y Jupyter , una interfaz para portátiles .

Historia

Ross Ihaka, cocreador de R

R fue iniciado por los profesores Ross Ihaka y Robert Gentleman como un lenguaje de programación para enseñar introducción a la estadística en la Universidad de Auckland . [9] El lenguaje se inspiró en el lenguaje de programación S , y la mayoría de los programas S pueden ejecutarse sin modificaciones en R. [6] El lenguaje también se inspiró en el alcance léxico de Scheme , permitiendo variables locales. [1]

El nombre del idioma, R , proviene de ser tanto un sucesor del idioma S como la primera letra compartida de los autores, Ross y Robert. [10] En agosto de 1993, Ihaka y Gentleman publicaron un binario de R en StatLib, un sitio web de archivo de datos . Al mismo tiempo, anunciaron la publicación en la lista de correo de s-news . [11] El 5 de diciembre de 1997, R se convirtió en un proyecto GNU cuando se lanzó la versión 0.60. [12] El 29 de febrero de 2000, se lanzó la primera versión oficial 1.0. [13]

Ejemplos

Media: una medida del centro

Un conjunto de datos numéricos puede tener una tendencia central (donde residen algunos de los puntos de datos más típicos). [14] La media aritmética ( promedio ) es la medida de tendencia central más utilizada. [14] La media de un conjunto de datos numéricos es la suma de los puntos de datos dividida por el número de puntos de datos. [14]

Sea = la media de un conjunto de datos.
Sea = una lista de puntos de datos.
Sea = el número de puntos de datos.

Supongamos que se tomó una muestra de cuatro observaciones de mediciones de temperatura en grados Celsius con 12 horas de diferencia.

Sea = una lista de puntos de datos de grados Celsius de 30, 27, 31, 28.

Este programa de computadora R generará la media de :

# La función c() "combina" una lista en un solo objeto. x <- c ( 30 , 27 , 31 , 28 )       suma <- suma ( x ) longitud <- longitud ( x ) media <- suma / longitud            mensaje ( "Medio:" ) imprimir ( medio )    

Nota: R puede tener el mismo identificador que represente tanto el nombre de una función como su resultado. Para obtener más información, visite alcance .

Producción:

Media: [1] 29

Este programa de R ejecutará la mean()función nativa para generar la media de x:

x <- c ( 30 , 27 , 31 , 28 )       mensaje ( "Media:" ) imprimir ( media ( x ) )      

Producción:

Media: [1] 29

Desviación estándar: una medida de dispersión

Una desviación estándar de un conjunto de datos numéricos es una indicación de la distancia promedio a la que se encuentran todos los puntos de datos de la media. [15] Para un conjunto de datos con una pequeña cantidad de variación, entonces cada punto de datos estará cerca de la media, por lo que la desviación estándar será pequeña. [15]

Sea = la desviación estándar de un conjunto de datos.
Sea = una lista de puntos de datos.
Sea = el número de puntos de datos.

Supongamos que se tomó una muestra de cuatro observaciones de mediciones de temperatura en grados Celsius con 12 horas de diferencia.

Sea = una lista de puntos de datos de grados Celsius de 30, 27, 31, 28.

Este programa R generará la desviación estándar de :

x <- c ( 30 , 27 , 31 , 28 ) distanciaDeMedia <- x - media ( x ) distanciaDeMediaCuadrado <- distanciaDeMedia ** 2 distanciaDeMediaCuadradoSum <- suma ( distanciaDeMediaCuadrado ) varianza <- distanciaDeMediaCuadrado / ( longitud ( x ) - 1 ) Desviación estándar <- sqrt ( varianza )                                   mensaje ( "Desviación estándar:" ) imprimir ( desviación estándar )    

Producción:

Desviación estándar: [1] 1,825742

Este programa R ejecutará la sd()función nativa para generar la desviación estándar de :

x <- c ( 30 , 27 , 31 , 28 )       mensaje ( "Desviación estándar:" ) imprimir ( sd ( x ) )      

Producción:

Desviación estándar: [1] 1,825742

Regresión lineal: una medida de relación

Un diagrama de dispersión que se asemeja a una relación lineal tiene infinitas líneas rectas [16] que pasarán cerca de todos los puntos de datos (representados en rojo ). La línea de regresión azul (generalmente llamada ajuste de curva ) es la línea recta que tiene la distancia promedio mínima (representada en verde ) desde todos los puntos hasta la línea.

Un fenómeno puede ser el resultado de uno o más eventos observables . Por ejemplo, el fenómeno de los accidentes de esquí puede ser consecuencia de la presencia de nieve en las montañas. Un método para medir si un conjunto de datos numéricos está relacionado o no con otro conjunto de datos es la regresión lineal . [17]

Sea = un conjunto de datos de puntos de datos independientes , en el que cada punto ocurrió en un momento específico.
Sea = un conjunto de datos de puntos de datos dependientes, en el que cada punto ocurrió al mismo tiempo que un punto de datos independiente.

Si existe una relación lineal , entonces un diagrama de dispersión de los dos conjuntos de datos mostrará un patrón que se asemeja a una línea recta. [18] Si se incluye una línea recta en el diagrama de dispersión de modo que la distancia promedio desde todos los puntos hasta la línea sea mínima, entonces la línea se llama línea de regresión . La ecuación de la recta de regresión se llama ecuación de regresión . [19]

La ecuación de regresión es una ecuación lineal ; por lo tanto, tiene pendiente y intercepto en y . El formato de la ecuación de regresión es . [20] [un]

Sea = la pendiente de la ecuación de regresión .
Sea = la intersección y de la ecuación de regresión .

Supongamos que se tomó una muestra de cuatro observaciones de mediciones de temperatura en grados Celsius con 12 horas de diferencia. Al mismo tiempo, se cambió el termómetro a la temperatura Fahrenheit y se tomó otra medición.

Sea = una lista de puntos de datos de grados Celsius de 30, 27, 31, 28.
Sea = una lista de puntos de datos en grados Fahrenheit de 86,0, 80,6, 87,8, 82,4.

Este programa R generará la pendiente y la intersección con el eje y de una relación lineal que depende de :

x <- c ( 30 , 27 , 31 , 28 ) y < - c ( 86,0 , 80,6 , 87,8 , 82,4 )              # Construir el numerador independentDistanceFromMean <- x - mean ( x ) sampledDependentDistanceFromMean <- y - mean ( y )            independentDistanceTimesSampledDistance <- independentDistanceFromMean * sampledDependentDistanceFromMean    IndependentDistanceTimesSampledDistanceSum <- suma ( independienteDistanceTimesSampledDistance )    # Construye el denominador independentDistanceFromMeanSquared <- independentDistanceFromMean ** 2    distanciaindependienteDeMeanCuadradoSum <- suma ( distanciaindependienteDeMeanCuadrado )    # La pendiente es el aumento sobre la pendiente de ejecución <- independentDistanceTimesSampledDistanceSum / independentDistanceFromMeanSquaredSum    yIntercepto <- media ( y ) - pendiente * ( media ( x ) )            mensaje ( "Pendiente:" ) imprimir ( pendiente )    mensaje ( "Y-intercept:" ) imprimir ( yIntercept )    

Producción:

Pendiente: [1] 1,8 Intersección en Y: [1] 32

Este programa de R ejecutará las funciones nativas para generar la pendiente y la intersección con el eje y :

x <- c ( 30 , 27 , 31 , 28 ) y < - c ( 86,0 , 80,6 , 87,8 , 82,4 )              # Ejecutar lm() con Fahrenheit depende de Celsius linearModel <- lm ( y ~ x )      # coeficientes() devuelve una estructura que contiene la pendiente y los coeficientes de intercepción y <- coeficientes ( modelo lineal )    # Extraer la pendiente de la pendiente de la estructura <- coeficientes [[ "x" ]]  # Extraer la intersección y de la estructura yIntercept <- coeficientes [[ "(Intersección)" ]]  mensaje ( "Pendiente:" ) imprimir ( pendiente )    mensaje ( "Y-intercept:" ) imprimir ( yIntercept )    

Producción:

Pendiente: [1] 1,8 Intersección en Y: [1] 32

Coeficiente de determinación: un porcentaje de variación.

El coeficiente de determinación determina el porcentaje de variación explicado por la variable independiente. [21] Siempre se encuentra entre 0 y 1. [22] Un valor de 0 indica que no hay relación entre los dos conjuntos de datos, y un valor cercano a 1 indica que la ecuación de regresión es extremadamente útil para hacer predicciones. [23]

Sea = el conjunto de datos de puntos de datos de respuesta predichos cuando los puntos de datos independientes se pasan a través de la ecuación de regresión .
Sea = el coeficiente de determinación en una relación entre una variable independiente y una variable dependiente.

Este programa R generará el coeficiente de determinación de la relación lineal entre y :

x <- c ( 30 , 27 , 31 , 28 ) y < - c ( 86,0 , 80,6 , 87,8 , 82,4 )              # Construya el numerador linearModel <- lm ( y ~ x ) coeficientes <- coeficientes ( linearModel ) pendiente <- coeficientes [[ "x" ]] yIntercept <- coeficientes [[ "(Intercept)" ]] predictedResponse <- yIntercept + ( pendiente * x )                      predictedResponseDistanceFromMean <- predictedResponse - media ( y )      predichaResponseDistanceFromMeanSquared <- predichaResponseDistanceFromMean ** 2    predictedResponseDistanceFromMeanSquaredSum <- suma ( predichoResponseDistanceFromMeanSquared )    # Construir el denominador sampledResponseDistanceFromMean <- y - mean ( y )      sampledResponseDistanceFromMeanSquared <- sampledResponseDistanceFromMean ** 2    sampledResponseDistanceFromMeanSquaredSum <- suma ( sampledResponseDistanceFromMeanSquared )    coeficienteDeDeterminación <- predictedResponseDistanceFromMeanSquaredSum / sampledResponseDistanceFromMeanSquaredSum    mensaje ( "Coeficiente de determinación:" ) imprimir ( coeficienteDeDeterminación )    

Producción:

Coeficiente de determinación: [1] 1

Este programa R ejecutará las funciones nativas para generar el coeficiente de determinación :

x <- c ( 30 , 27 , 31 , 28 ) y < - c ( 86,0 , 80,6 , 87,8 , 82,4 )              modelo lineal <- lm ( y ~ x ) resumen <- resumen ( modelo lineal ) coeficienteDeDeterminación <- resumen [[ "r.squared" ]]            mensaje ( "Coeficiente de determinación:" ) imprimir ( coeficienteDeDeterminación )    

Salida: [b]

Coeficiente de determinación: [1] 1

Parcela única

Este programa R mostrará un diagrama de dispersión con una línea de regresión incorporada y una ecuación de regresión que ilustra la relación entre y :

x <- c ( 30 , 27 , 31 , 28 ) y < - c ( 86,0 , 80,6 , 87,8 , 82,4 )              modelo lineal <- lm ( y ~ x ) coeficientes <- coeficientes ( modelo lineal ) pendiente <- coeficientes [[ "x" ]] intersección <- coeficientes [[ "(Intercepción)" ]]              # Ejecute pegar() para construir la ecuación de regresión cadena regressionEquation <- pegar ( "y =" , interceptar , "+" , pendiente , "x" )        # Mostrar un diagrama de dispersión con la línea de regresión y el diagrama integrado de la ecuación ( x , y , main = "Fahrenheit depende de Celsius" , sub = regressionEquation , xlab = "Degress Celsius" , ylab = "Degress Fahrenheit" , abline ( linearModel ) )            

Producción:

Parcela múltiple

Este programa R generará una gráfica múltiple y una tabla de residuos.

# La variable independiente es una lista de números del 1 al 6. x <- 1 : 6  # La variable dependiente es una lista de cada variable independiente al cuadrado. y <- x ^ 2  # La ejecución del modelo lineal en una ecuación cuadrática producirá residuos. Modelo lineal <- lm ( y ~ x )    # Mostrar los residuos. resumen ( modelo lineal )  # Crea una trama múltiple de 2 por 2. par ( mfrow = c ( 2 , 2 ))   # Genera el gráfico múltiple. trama ( modelo lineal )  

Producción:

Residuos:  1 2 3 4 5 6 7 8 9 10 3,3333 -0,6667 -2,6667 -2,6667 -0,6667 3,3333Coeficientes:  Estimar Std. Valor t de error Pr(>|t|) (Intercepción) -9,3333 2,8441 -3,282 0,030453 * x 7,0000 0,7303 9,585 0,000662 *** --- Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0,1 '' 1Error estándar residual: 3,055 en 4 grados de libertad R cuadrado múltiple: 0,9583, R cuadrado ajustado: 0,9478 Estadístico F: 91,88 en 1 y 4 DF, valor p: 0,000662
Gráficos de diagnóstico a partir del trazado de “modelo lineal”. Observe la notación matemática que se muestra en la etiqueta del gráfico inferior izquierdo.

gráfico de mandelbrot

Este ejemplo del conjunto de Mandelbrot destaca el uso de números complejos . Modela las primeras 20 iteraciones de la ecuación , donde representa diferentes constantes complejas.z = z2 + cc

Instale el paquete que proporciona la write.gif()función de antemano:

instalar.paquetes ( "caTools" )

programa R:

biblioteca ( caTools )jet.colors <- colorRampPalette ( c ( "verde" , "rosa" , "#007FFF" , "cian" , "#7FFF7F" , "blanco" , "#FF7F00" , "rojo" , "#7F0000" ))           dx <- 1500 # define ancho dy <- 1400 # define altura      C <- complejo ( real = rep ( sec ( -2.2 , 1.0 , longitud.out = dx ), cada uno = dy ), imag = rep ( sec ( -1.2 , 1.2 , longitud.out = dy ), dx ))                     # remodelar como matriz de números complejos C <- matriz ( C , dy , dx )    # inicializar la salida de la matriz 3D X <- matriz ( 0 , c ( dy , dx , 20 ))     Z <- 0  # bucle con 20 iteraciones para ( k en 1 : 20 ) {    # la ecuación en diferencias central Z <- Z ^ 2 + C      # capturar los resultados X [, , k ] <- exp ( - abs ( Z )) }     write.gif ( X , "Mandelbrot.gif" , col = jet.colors , retraso = 100 )        

Producción:

Gráfico "Mandelbrot.gif" creado en R

Programación

R es un lenguaje interpretado , por lo que los programadores normalmente acceden a él a través de un intérprete de línea de comandos . Si un programador escribe 1+1en el símbolo del sistema R2 y presiona Enter, la computadora responde con . [24] Los programadores también guardan programas R en un archivo y luego ejecutan el intérprete por lotes Rscript. [25]

Objeto

R almacena datos dentro de un objeto . A un objeto se le asigna un nombre que el programa informático utiliza para establecer y recuperar un valor . [26] Un objeto se crea colocando su nombre a la izquierda del par de símbolos<- . [27] El par de símbolos <-se denomina operador de asignación . [28]

Para crear un objeto llamado xy asignarle el valor entero82 :

x <- 82L impresión ( x )    

Producción:

[1] 82

El [1]que se muestra antes del número es un subíndice . Muestra que el contenedor de este número entero es el índice uno de una matriz .

Vector

El objeto R más primitivo es el vector . [29] Un vector es una matriz unidimensional de datos. Para asignar varios elementos a la matriz, utilice la c()función para "combinar" los elementos. Los elementos deben ser del mismo tipo de datos . [30] R carece de tipos de datos escalares , que son marcadores de posición para una sola palabra , generalmente un número entero. En cambio, se almacena un único número entero en el primer elemento de una matriz. El número entero único se recupera utilizando el subíndice de índice de [1]. [C]

Programa R para almacenar y recuperar un único número entero:

almacenar <- 82L recuperar <- almacenar [ 1 ] imprimir ( recuperar [ 1 ] )      

Producción:

[1] 82

Operación por elementos

Cuando se aplica una operación a un vector, R aplicará la operación a cada elemento de la matriz. Esto se llama operación por elementos . [31]

Este ejemplo crea el objeto nombrado xy le asigna números enteros del 1 al 3. El objeto se muestra y luego nuevamente con uno agregado a cada elemento:

x <- 1 : 3 imprimir ( x ) imprimir ( x + 1 )        

Producción:

[1] 1 2 3 [1] 2 3 4

Para lograr muchas adiciones, R implementa el reciclaje de vectores . [31] El número uno que sigue al signo más ( +) se convierte en una matriz interna de tres unos. La +operación recorre simultáneamente ambas matrices y realiza la suma en cada par de elementos. Los resultados se almacenan en otra matriz interna de tres elementos que se devuelve a la print()función.

Vector numérico

Un vector numérico se utiliza para almacenar números enteros y de punto flotante . [32] La característica principal de un vector numérico es la capacidad de realizar aritmética sobre los elementos. [32]

vector entero

De forma predeterminada, los números enteros (números sin punto decimal) se almacenan como punto flotante. Para forzar la asignación de memoria de números enteros, agregue una Lal número. Como excepción, el operador de secuencia :asignará, de forma predeterminada, memoria de números enteros.

programa R :

x <- 82L imprimir ( x [ 1 ] ) mensaje ( "Tipo de datos:" ) tipo de ( x )        

Producción:

[1] 82 Tipo de datos: [1] "entero"

programa R :

x <- c ( 1L , 2L , 3L ) imprimir ( x ) mensaje ( "Tipo de datos:" ) tipo de ( x )            

Producción:

[1] 1 2 3 Tipo de datos: [1] "entero"

programa R :

x <- 1 : 3 imprimir ( x ) mensaje ( "Tipo de datos:" ) tipo de ( x )        

Producción:

[1] 1 2 3 Tipo de datos: [1] "entero"
doble vector

Un vector doble almacena números reales , que también se conocen como números de coma flotante . La asignación de memoria para un número de coma flotante es de doble precisión . [32] La doble precisión es la asignación de memoria predeterminada para números con o sin punto decimal.

programa R :

x <- 82 imprimir ( x [ 1 ] ) mensaje ( "Tipo de datos:" ) tipo de ( x )        

Producción:

[1] 82 Tipo de datos: [1] "doble"

programa R :

x <- c ( 1 , 2 , 3 ) imprimir ( x ) mensaje ( "Tipo de datos:" ) tipo de ( x )            

Producción:

[1] 1 2 3 Tipo de datos: [1] "doble"

vector lógico

Un vector lógico almacena datos binarios , ya sea TRUEo FALSE. El propósito de este vector es almacenar el resultado de una comparación. [33] Un dato lógico se expresa como TRUE, T, FALSEo F. [33] Las letras mayúsculas son obligatorias y las constantes no están rodeadas por comillas . [33]

programa R :

x <- 3 < 4 imprimir ( x [ 1 ] ) mensaje ( "Tipo de datos:" ) tipo de ( x )          

Producción:

[1] VERDADERO Tipo de datos: [1] "lógico"

Se pueden comparar dos vectores utilizando los siguientes operadores lógicos : [34]


Vector de caracteres

Un vector de caracteres almacena cadenas de caracteres . [35] Las cadenas se crean encerrando el texto entre comillas dobles. [35]

programa R :

x <- "hola mundo" imprimir ( x [ 1 ] ) mensaje ( "Tipo de datos:" ) tipo de ( x )        

Producción:

[1] "hola mundo" Tipo de datos: [1] "carácter"

programa R :

x <- c ( "hola" , "mundo" ) imprimir ( x ) mensaje ( "Tipo de datos:" ) tipo de ( x )           

Producción:

[1] "hola" "mundo" Tipo de datos: [1] "carácter"

Factor

Un Factor es un vector que almacena una variable categórica . [36] La factor()función convierte una cadena de texto en un tipo enumerado , que se almacena como un número entero . [37]

En diseño experimental , un factor es una variable independiente a probar (una entrada) en un experimento controlado . [38] Se utiliza un experimento controlado para establecer la causalidad , no sólo la asociación . [39] Por ejemplo, se podría observar que un aumento en las ventas de chocolate caliente está asociado con un aumento en los accidentes de esquí.

Una unidad experimental es un elemento sobre el que se realiza un experimento. Si la unidad experimental es una persona, entonces se la conoce como sujeto . Una variable de respuesta (también conocida como variable dependiente ) es un posible resultado de un experimento. Un nivel de factor es una característica de un factor. Un tratamiento es un entorno que consta de una combinación de un nivel (característica) de cada uno de los factores de entrada. Una réplica es la ejecución de un tratamiento en una unidad experimental y produce variables de respuesta . [40]

Este ejemplo construye dos programas R para modelar un experimento para aumentar el crecimiento de una especie de cactus . Se prueban dos factores :

  1. Niveles de agua nulos, ligeros o medios.
  2. Niveles de polímero superabsorbente no usados ​​o usados.

Programa R para configurar el diseño:

# El paso 1 es establecer los niveles de un factor. # Vector de los niveles del agua: waterLevel <- c ( "none" , "light" , "medium" )      # El paso 2 es crear el factor. # Vector del factor agua: waterFactor <- factor ( # Aunque es posible un subconjunto, use todos los niveles. waterLevel , niveles = waterLevel )        # Vector de los niveles del polímero: polymerLevel <- c ( "notUsed" , "used" )     # Vector del factor polímero: polímeroFactor <- factor ( nivelpolímero , niveles = nivelpolímero )       # Los tratamientos son el producto cartesiano de ambos factores. tratamientoProductoCartesiano <- expand.grid ( factoragua , factorpolímero )     mensaje ( "Factor de agua:" ) imprimir ( factor de agua )    mensaje ( "\nFactor de polímero:" ) imprimir ( Factor de polímero )    mensaje ( "\nTratamiento Producto cartesiano:" ) imprimir ( tratamientoProductocartesiano )    

Producción:

Factor de agua: [1] ninguno ligero medio Niveles: ninguno ligero medioFactor de polímero: [1] no usado usado Niveles: no usado usadoTratamiento Producto cartesiano:  Var1 Var2 1 ninguno no usado 2 ligero no usado 3 medio no usado 4 ninguno usado 5 ligero usado 6 medio usado

Programa R para almacenar y mostrar los resultados:

Unidad experimental <- c ( "cactus1" , "cactus2" , "cactus3" )      replicateWater <- c ( "none" , "light" , "medium" ) replicatePolymer <- c ( "notUsed" , "used" , "notUsed" ) replicatePulgadas <- c ( 82L , 83L , 84L )                  respuesta <- data.frame ( unidad experimental , replicarAgua , replicarPolímero , replicarPulgadas )       imprimir ( respuesta )  

Producción:

 experimentalReplica de unidadReplica de aguaReplica de polímeroPulgadas 1 cactus1 ninguno no usado 82 2 cactus2 ligero usado 83 3 cactus3 mediano no usado 84

Marco de datos

Un marco de datos almacena una matriz bidimensional. [41] La dimensión horizontal es una lista de vectores. La dimensión vertical es una lista de filas. Es la estructura más útil para el análisis de datos . [42] Los marcos de datos se crean usando la data.frame()función. La entrada es una lista de vectores (de cualquier tipo de datos). Cada vector se convierte en una columna de una tabla . Los elementos de cada vector están alineados para formar las filas de la tabla.

programa R :

entero <- c ( 82L , 83L ) cadena <- c ( "hola" , "mundo" ) data.frame <- data.frame ( entero , cadena ) print ( data.frame ) mensaje ( "Tipo de datos:" ) clase ( marco de datos )                     

Producción:

 cadena entera 1 82 hola 2 83 mundo Tipo de datos: [1] "data.frame"

Los marcos de datos se pueden deconstruir proporcionando el nombre de un vector entre corchetes dobles. Esto devuelve el vector original. Se puede acceder a cada elemento del vector devuelto mediante su número de índice.

Programa R para extraer la palabra "mundo". Se almacena en el segundo elemento del vector "cadena":

entero <- c ( 82L , 83L ) cadena <- c ( "hola" , "mundo" ) marco.datos <- marco.datos ( entero , cadena ) vector <- marco.datos [[ "cadena" ]] imprimir ( vector [ 2 ] ) mensaje ( "Tipo de datos:" ) tipo de ( vector )                       

Producción:

[1] "mundo" Tipo de datos: [1] "carácter"

Codificación vectorizada

La codificación vectorizada es un método para producir programas informáticos R de calidad que aprovechan las fortalezas de R. [43] El lenguaje R está diseñado para ser rápido en pruebas lógicas, subconjuntos y ejecución de elementos. [43] Por otro lado, R no tiene un bucle rápido. [44] Por ejemplo, R puede buscar y reemplazar más rápido usando vectores lógicos que usando un bucle. [44]forfor

En bucle

Un forbucle repite un bloque de código durante una cantidad específica de iteraciones . [45]

Ejemplo de búsqueda y reemplazo usando un forbucle:

vector <- c ( "uno" , "dos" , "tres" )      for ( i en 1 : longitud ( vector ) ) { if ( vector [ i ] == "uno" ) { vector [ i ] <- "1" } }                    mensaje ( "Vector reemplazado:" ) imprimir ( vector )    

Producción:

Vector reemplazado: [1] "1" "dos" "tres"

Subconjunto

La sintaxis de R permite utilizar un vector lógico como índice de un vector. [46] Este método se llama subconjunto . [47]

Ejemplo de R :

vector <- c ( "uno" , "dos" , "tres" )      imprimir ( vector [ c ( VERDADERO , FALSO , VERDADERO ) ] )        

Producción:

[1] "uno" "tres"

Cambiar un valor usando un número de índice

R permite que el operador de asignación <-sobrescriba un valor existente en un vector utilizando un número de índice. [28]

Ejemplo de R :

vector <- c ( "uno" , "dos" , "tres" ) vector [ 1 ] <- "1"          imprimir ( vectorial )  

Producción:

[1] "1" "dos" "tres"

Cambiar un valor usando subconjuntos

R también permite que el operador de asignación <-sobrescriba un valor existente en un vector utilizando un vector lógico .

Ejemplo de R :

vector <- c ( "uno" , "dos" , "tres" ) vector [ c ( VERDADERO , FALSO , FALSO ) ] <- "1"              imprimir ( vectorial )  

Producción:

[1] "1" "dos" "tres"

Código vectorizado para buscar y reemplazar

Debido a que se puede utilizar un vector lógico como índice y a que el operador lógico devuelve un vector, se puede realizar una búsqueda y reemplazo sin un forbucle.

Ejemplo de R :

vector <- c ( "uno" , "dos" , "tres" ) vector [ vector == "uno" ] <- "1"            imprimir ( vectorial )  

Producción:

[1] "1" "dos" "tres"

Funciones

Una función es un objeto que almacena código de computadora en lugar de datos . [48] ​​El propósito de almacenar código dentro de una función es poder reutilizarlo en otro contexto. [48]

Funciones nativas

R viene con más de 1000 funciones nativas para realizar tareas comunes. [49] Para ejecutar una función:

  1. escriba el nombre de la función
  2. escriba un paréntesis abierto(
  3. escriba los datos a procesar
  4. escriba entre paréntesis cerrados)

En este ejemplo se tira un dado una vez. El nombre de la función nativa es sample(). Los datos a tratar son:

  1. un vector entero numérico del uno al seis
  2. el sizeparámetro indica sample()ejecutar el rollo una vez
muestra ( 1 : 6 , tamaño = 1 )   

Posible salida:

[dieciséis

El intérprete de R proporciona una pantalla de ayuda para cada función nativa. La pantalla de ayuda aparece después de escribir un signo de interrogación seguido del nombre de la función:

? muestra

Salida parcial:

Descripción:  'muestra' toma una muestra del tamaño especificado de los elementos de  'x' usando con o sin reemplazo.Uso:  muestra (x, tamaño, reemplazar = FALSO, prob = NULL)
Parámetros de función

La sample()función tiene disponibles cuatro parámetros de entrada . Los parámetros de entrada son piezas de información que controlan el comportamiento de la función. Los parámetros de entrada se pueden comunicar a la función mediante una combinación de tres formas:

  1. por posición separados por comas
  2. por nombre separado por comas y el signo igual
  3. dejado vacío

Por ejemplo, cada una de estas llamadas a sample()lanzará un dado una vez:

muestra ( 1 : 6 , 1 , F , NULL ) muestra ( 1 : 6 , 1 ) muestra ( 1 : 6 , tamaño = 1 ) muestra ( tamaño = 1 , x = 1 : 6 )              

Cada parámetro de entrada tiene un nombre. [50] Si una función tiene muchos parámetros, la configuración name = datahará que el código fuente sea más legible. [51] Si se omite el nombre del parámetro, R coincidirá con los datos en el orden de posición. [51] Por lo general, los parámetros que rara vez se utilizan tendrán un valor predeterminado y pueden omitirse.

Acoplamiento de datos

La salida de una función puede convertirse en la entrada de otra función. Esta es la base para el acoplamiento de datos . [52]

Este ejemplo ejecuta la función sample()y envía el resultado a la función sum(). Simula la tirada de dos dados y los suma.

suma ( muestra ( 1 : 6 , tamaño = 2 , reemplazar = VERDADERO ) )      

Posible salida:

[1] 7
Funciones como parámetros

Una función tiene parámetros típicamente para ingresar datos. Alternativamente, una función (A) puede usar un parámetro para ingresar otra función (B). La función (A) asumirá la responsabilidad de ejecutar la función (B).

Por ejemplo, la función replicate()tiene un parámetro de entrada que es un marcador de posición para otra función. Este ejemplo se ejecutará una replicate()vez y cinco veces. Simulará lanzar un dado cinco veces:replicate()sample()

replicar ( 5 , muestra ( 1 : 6 , tamaño = 1 ) )      

Posible salida:

[1] 2 4 1 4 5
Distribución uniforme

Debido a que es igualmente probable que cada cara de un dado aparezca en la parte superior, lanzar un dado muchas veces genera una distribución uniforme . [53] Este ejemplo muestra un histograma de un dado lanzado 10.000 veces:

hist ( replicar ( 10000 , muestra ( 1 : 6 , tamaño = 1 ) ) )        

Es probable que la salida tenga una parte superior plana:

Teorema del límite central

Mientras que un conjunto de datos numéricos puede tener una tendencia central , también puede no tener una tendencia central. No obstante, un conjunto de datos de la media aritmética de muchas muestras tendrá una tendencia central a converger a la media de la población. La media aritmética de una muestra se llama media muestral . [54] El teorema del límite central establece que para un tamaño de muestra de 30 o más, la distribución de la media muestral ( ) tiene una distribución aproximadamente normal , independientemente de la distribución de la variable bajo consideración ( ). [55] Un histograma que muestra una frecuencia de promedios de puntos de datos mostrará que la distribución de la media de la muestra se asemeja a una curva en forma de campana .

Por ejemplo, lanzar un dado muchas veces genera una distribución uniforme . No obstante, tirar 30 dados y calcular cada promedio ( ) una y otra vez genera una distribución normal.

Programa R para tirar 30 dados 10.000 veces y trazar la frecuencia de los promedios:

hist ( replicar ( 10000 , media ( muestra ( 1 : 6 , tamaño = 30 , reemplazar = T ) ) ) )           

Es probable que la salida tenga forma de campana:

Funciones creadas por el programador

Para crear un objeto de función, ejecute la function() declaración y asigne el resultado a un nombre. [56] Una función recibe entradas tanto de variables globales como de parámetros de entrada (a menudo llamados argumentos). Los objetos creados dentro del cuerpo de la función permanecen locales para la función.

Programa R para crear una función:

# Los parámetros de entrada son xey. # El valor de retorno es un vector doble numérico. f <- función ( x , y ) { primera_expresión <- x * 2 segunda_expresión <- y * 3 primera_expresión + segunda_expresión                 # La declaración de devolución se puede omitir # si la última expresión no está asignada. # Esto ahorrará algunos ciclos de reloj. }  

Salida de uso:

> f ( 1 , 2 ) [1] 8 

Los argumentos de la función se pasan por valor .

Si declaraciones

Programa R que ilustra declaraciones if :

mínimo <- función ( a , b ) { si ( a < b ) mínimo <- a else mínimo <- b             devolución ( mínimo ) }  máximo <- función ( a , b ) { si ( a > b ) máximo <- a else máximo <- b             retorno ( máximo ) }  rango <- función ( a , b , c ) { rango <- máximo ( a , máximo ( b , c ) ) - mínimo ( a , mínimo ( b , c ) )                    retorno ( rango ) }  rango ( 10 , 4 , 7 )    

Producción:

[dieciséis
Funciones genéricas

R admite funciones genéricas . Actúan de manera diferente según la clase del argumento pasado. El proceso consiste en enviar el método específico de la clase. Una implementación común es la función de R. print()Puede imprimir casi todas las clases de objetos. Por ejemplo, print(objectName). [57]

Atajos de programación

R proporciona tres atajos notables disponibles para los programadores.

Omitir la función print()

Si un objeto está presente en una línea por sí solo, entonces el intérprete enviará el objeto a la print()función. [58]

Ejemplo de R :

entero <- 82L entero  

Producción:

[1] 82

Omitir la declaración return()

Si una función creada por el programador omite la return() declaración , entonces el intérprete devolverá la última expresión no asignada . [59]

Ejemplo de R :

f <- function () { # No asignar la expresión a un objeto. 82L + 1L }      

Salida de uso:

> f () [1] 83

Operador de asignación alternativo

El símbolo -par <- asigna un valor a un objeto. [28] Alternativamente, =se puede utilizar como operador de asignación. Sin embargo, se debe tener cuidado porque =se parece mucho al operador lógico de igualdad, que es ==. [60]

Ejemplo de R :

entero = 82L imprimir ( entero )    

Producción:

[1] 82

Distribución normal

Si un conjunto de datos numéricos tiene una tendencia central , también puede tener un histograma de apariencia simétrica , una forma que se asemeja a una campana. Si un conjunto de datos tiene un histograma aproximadamente en forma de campana, se dice que tiene una distribución normal . [61]

Tamaño del pecho del conjunto de datos de milicianos escoceses

En 1817, un contratista del ejército escocés midió el tamaño del pecho de 5.732 miembros de una unidad de la milicia . La frecuencia de cada tamaño fue: [62]



Crear un archivo de valores separados por comas

R tiene la write.csv() función de convertir un marco de datos en un archivo CSV .

Programa R para crear chestsize.csv:

tamaño del pecho <- c ( 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 )                  frecuencia <- c ( 3 , 19 , 81 , 189 , 409 , 753 , 1062 , 1082 , 935 , 646 , 313 , 168 , 50 , 18 , 3 , 1 )                  dataFrame <- data.frame ( tamaño del cofre , frecuencia )     write.csv ( dataFrame , file = "chestsize.csv" , # De forma predeterminada, write.csv() crea la primera columna como número de fila. row.names = FALSE )       

Importar un conjunto de datos

El primer paso en la ciencia de datos es importar un conjunto de datos. [63]

Programa R para importar chestsize.csv en un marco de datos:

marco de datos <- read.csv ( "chestsize.csv" ) imprimir ( marco de datos )      

Producción:

 Frecuencia del tamaño del pecho 1 33 3 2 34 19 3 35 81 4 36 189 5 37 409 6 38 753 7 39 1062 8 40 1082 9 41 935 10 42 646 11 43 313 12 44 168 13 45 50 14 46 18 15 47 3 16 48 1

Transformar un conjunto de datos

El segundo paso en la ciencia de datos es transformar los datos al formato que esperan las funciones. [63] El conjunto de datos sobre el tamaño del pecho se resume en frecuencia; sin embargo, las funciones de distribución normal de R requieren un doble vector numérico.

Función R para convertir un marco de datos resumido a frecuencia en un vector:

# Nombre de archivo: frecuenciaDataFrameToVector.RfrecuenciaDataFrameToVector <- function ( dataFrame , dataColumnName , frecuenciaColumnName = "frecuencia" ) { dataVector <- dataFrame [[ dataColumnName ]] frecuenciaVector <- dataFrame [[ frecuenciaColumnName ]]                   vectorIndex <- 1 frecuenciaIndex <- 1 vector <- NA         for ( dato en vector de datos ) { frecuencia <- Vector de frecuencia [ índice de frecuencia ]           for ( i en 1 : frecuencia ) { vector [ vectorIndex ] <- datum vectorIndex <- vectorIndex + 1 }                 índice de frecuencia <- índice de frecuencia + 1 }      retorno ( vector ) }  

R tiene la source()función de incluir otro archivo fuente de R en el programa actual.

Programa R para cargar y mostrar un resumen del conjunto de datos de 5732 miembros:

fuente ( "frequencyDataFrameToVector.R" )  marco de datos <- read.csv ( "chestsize.csv" )    ChestSizeVector <- frecuenciaDataFrameToVector ( dataFrame , "pecho" )     mensaje ( "Cabeza:" ) cabeza ( pechoTamañoVector )    mensaje ( "\nCola:" ) cola ( pechoSizeVector )    mensaje ( "\nCount:" ) longitud ( chestSizeVector )    mensaje ( "\nMean:" ) significa ( chestSizeVector )    mensaje ( "\nDesviación estándar:" ) sd ( ChestSizeVector )    

Producción:

Cabeza: [1] 33 33 33 34 34 34Cola: [1] 46 46 47 47 47 48Conteo: [1] 5732Media: [1] 39,84892Desviación estándar: [1] 2,073386

Visualizar un conjunto de datos

El tercer paso en la ciencia de datos es visualizar el conjunto de datos. [63] Si un histograma de un conjunto de datos se asemeja a una forma de campana, entonces está distribuido normalmente . [61]

Programa R para mostrar un histograma del conjunto de datos:

fuente ( "frequencyDataFrameToVector.R" )  marco de datos <- read.csv ( "chestsize.csv" )    ChestSizeVector <- frecuenciaDataFrameToVector ( dataFrame , "pecho" )     hist ( pechoTamañoVector )  

Producción:

Variable estandarizada

Cualquier variable ( ) en un conjunto de datos se puede convertir en una variable estandarizada ( ). La variable estandarizada también se conoce como puntuación z. [64] Para calcular la puntuación z, reste la media y divida por la desviación estándar . [sesenta y cinco]

Sea = un conjunto de puntos de datos.
Sea = la media del conjunto de datos.
Sea = la desviación estándar del conjunto de datos.
Sea = el elemento del conjunto.
Sea = la puntuación z del elemento del conjunto.

Función R para convertir una medición en una puntuación z:

# Nombre de archivo: zScore.RzScore <- función ( medición , media , desviación estándar ) { ( medición - media ) / desviación estándar }             

Programa R para convertir una medida del tamaño del pecho de 38 en una puntuación z:

fuente ( "zScore.R" )  imprimir ( zScore ( 38 , 39.84892 , 2.073386 ) )      

Producción:

[1] -0,8917394

Programa R para convertir una medida del tamaño del pecho de 42 en una puntuación z:

fuente ( "zScore.R" )  imprimir ( zScore ( 42 , 39.84892 , 2.073386 ) )      

Producción:

[1] 1.037472

Conjunto de datos estandarizados

Un conjunto de datos estandarizado es un conjunto de datos en el que cada miembro de un conjunto de datos de entrada se ejecutó a través de la zScorefunción.

Función R para convertir un vector numérico en un vector de puntuación z:

# Nombre de archivo: zScoreVector.Rfuente ( "zScore.R" )  zScoreVector <- función ( vector ) { zScoreVector = NA        for ( i en 1 : longitud ( vector ) ) { zScoreVector [ i ] <- zScore ( vector [ i ], media ( vector ), sd ( vector ) ) }                        retorno ( zScoreVector ) }  

Conjunto de datos estandarizados sobre el tamaño del cofre

Programa R para estandarizar el conjunto de datos del tamaño del cofre:

fuente ( "frequencyDataFrameToVector.R" ) fuente ( "zScoreVector.R" )    marco de datos <- read.csv ( "chestsize.csv" )    ChestSizeVector <- frecuenciaDataFrameToVector ( dataFrame , dataColumnName = "pecho" )       zScoreVector <- zScoreVector ( pechoTamañoVector )    mensaje ( "Cabeza:" ) cabeza ( zScoreVector )    mensaje ( "\nTail:" ) tail ( zScoreVector )    mensaje ( "\nCount:" ) longitud ( zScoreVector )    mensaje ( "\nMean:" ) ronda ( mean ( zScoreVector ) )      mensaje ( "\nDesviación estándar:" ) sd ( zScoreVector )    histórico ( zScoreVector )  

Producción:

Cabeza : [ 1 ] -3.303253 -3.303253 -3.303253 -2.820950 -2.820950 -2.820950      Cola : [ 1 ] 2.966684 2.966684 3.448987 3.448987 3.448987 3.931290      Conteo : [ 1 ] 5732 Media : [ 1 ] 0 Desviación estándar : [ 1 ] 1  

Curva normal estándar

La curva normal estándar está centrada en 0 y la mayor parte del área está entre -3 y 3.

Un histograma de un conjunto de datos distribuido normalmente que se convierte a su conjunto de datos estandarizado también se asemeja a una curva en forma de campana. La curva se llama curva normal estándar o curva z . Las cuatro propiedades básicas de la curva z son: [66]

  1. El área total bajo la curva es 1.
  2. La curva se extiende indefinidamente hacia la izquierda y hacia la derecha. Nunca toca el eje horizontal.
  3. La curva es simétrica y centrada en 0.
  4. Casi toda el área bajo la curva se encuentra entre -3 y 3.

Área bajo la curva normal estándar

La probabilidad de que una medición futura sea un valor entre un rango designado es igual al área bajo la curva normal estándar de las dos puntuaciones z del rango designado . [67]

Por ejemplo, supongamos que el intendente de la milicia escocesa quisiera abastecerse de uniformes. ¿Cuál es la probabilidad de que el próximo recluta necesite una talla entre 38 y 42?

programa R :

biblioteca ( tigrestats ) fuente ( "frequencyDataFrameToVector.R" ) fuente ( "zScore.R" )      marco de datos <- read.csv ( "chestsize.csv" )    ChestSizeVector <- frecuenciaDataFrameToVector ( dataFrame , dataColumnName = "pecho" )       zScore38 <- zScore ( 38 , media ( chestSizeVector ), sd ( chestSizeVector ) )          zScore42 <- zScore ( 42 , media ( chestSizeVector ), sd ( chestSizeVector ) )          areaLeft38 <- tigrestats :: pnormGC ( zScore38 ) areaLeft42 <- tigrestats :: pnormGC ( zScore42 )        áreaEntre <- áreaIzquierda42 - áreaIzquierda38    mensaje ( "Probabilidad:" ) imprimir ( áreaEntre )    

Producción:

Probabilidad: [1] 0,6639757

La pnormGC()función puede calcular la probabilidad entre un rango sin calcular primero la puntuación z.

programa R :

fuente de la biblioteca ( tigrestats ) ( "frequencyDataFrameToVector.R" )    marco de datos <- read.csv ( "chestsize.csv" )    ChestSizeVector <- frecuenciaDataFrameToVector ( dataFrame , dataColumnName = "pecho" )       areaBetween <- Tigerstats :: pnormGC ( c ( 38 , 42 ), media = media ( pechoTamañoVector ), sd = sd ( pechoTamañoVector ), región = "entre" , gráfico = VERDADERO )                       mensaje ( "Probabilidad:" ) imprimir ( áreaEntre )    

Producción:

Probabilidad: [1] 0,6639757

Paquetes

referirse al título
Trama de violín creada a partir del paquete de visualización R ggplot2

Los paquetes R son colecciones de funciones, documentación y datos que expanden R. [68] Por ejemplo, los paquetes agregan funciones de informes como RMarkdown , knitr y Sweave . La fácil instalación y uso de paquetes han contribuido a la adopción del lenguaje en la ciencia de datos . [69]

La Comprehensive R Archive Network (CRAN) fue fundada en 1997 por Kurt Hornik y Fritz Leisch para alojar el código fuente , los archivos ejecutables, la documentación y los paquetes creados por el usuario de R. [70] Su nombre y alcance imitan la Red Integral de Archivos TeX y la Red Integral de Archivos Perl . [70] CRAN originalmente tenía tres espejos y 12 paquetes contribuidos. [71] A diciembre de 2022, tiene 103 espejos [72] y 18.976 paquetes contribuidos. [73] Los paquetes también están disponibles en los repositorios R-Forge, Omegahat y GitHub.

Las Vistas de tareas en el sitio web de CRAN enumeran paquetes en campos como finanzas, genética, informática de alto rendimiento, aprendizaje automático, imágenes médicas, metanálisis , ciencias sociales y estadísticas espaciales.

El proyecto Bioconductor proporciona paquetes para análisis de datos genómicos, ADN complementario , microarrays y métodos de secuenciación de alto rendimiento .

Los paquetes agregan la capacidad de implementar varias técnicas estadísticas como modelado lineal , lineal generalizado y no lineal , pruebas estadísticas clásicas , análisis espacial , análisis de series temporales y agrupación .

El paquete tidyverse está organizado para tener una interfaz común. Cada función del paquete está diseñada para acoplar todas las demás funciones del paquete. [68]

La instalación de un paquete se produce sólo una vez. Para instalar tidyverse : [68]

> instalar.paquetes ( "tidyverse" )  

Para crear una instancia de las funciones, datos y documentación de un paquete, ejecute la library()función. Para crear una instancia de tidyverse : [d]

> biblioteca ( tidyverse )  

Interfaces

R viene instalado con una consola de línea de comandos . Disponibles para instalación hay varios entornos de desarrollo integrados (IDE). Los IDE para R incluyen R.app (solo OSX/macOS), Rattle GUI , R Commander , RKWard , RStudio y Tinn-R.

Los IDE de uso general que admiten R incluyen Eclipse a través del complemento StatET y Visual Studio a través de R Tools para Visual Studio .

Los editores que admiten R incluyen Emacs , Vim a través del complemento Nvim-R, Kate , LyX a través de Sweave , WinEdt (sitio web) y Jupyter (sitio web).

Los lenguajes de scripting que admiten R incluyen Python (sitio web), Perl (sitio web), Ruby (código fuente), F# (sitio web) y Julia (código fuente).

Los lenguajes de programación de propósito general que admiten R incluyen Java a través del servidor de socket Rserve y .NET C# (sitio web).

Los marcos estadísticos que utilizan R en segundo plano incluyen Jamovi y JASP .

Comunidad

El R Core Team se fundó en 1997 para mantener el código fuente de R. La Fundación R para Computación Estadística se fundó en abril de 2003 para brindar apoyo financiero. El R Consortium es un proyecto de la Fundación Linux para desarrollar la infraestructura R.

R Journal es una revista académica de acceso abierto que presenta artículos de corta y mediana extensión sobre el uso y desarrollo de R. Incluye artículos sobre paquetes, consejos de programación, noticias de CRAN y noticias sobre fundamentos.

La comunidad R organiza muchas conferencias y reuniones en persona. Estos grupos incluyen:

Implementaciones

La implementación principal de R está escrita principalmente en C , Fortran y el propio R. Otras implementaciones incluyen:

Microsoft R Open (MRO) fue una implementación de R. A partir del 30 de junio de 2021, Microsoft comenzó a eliminar gradualmente MRO en favor de la distribución CRAN. [76]

Soporte comercial

Aunque R es un proyecto de código abierto , algunas empresas brindan soporte comercial:

Ver también

enlaces externos

Portal

Notas

  1. ^ El formato de la ecuación de regresión difiere del formato algebraico de . La intersección con el eje y se coloca primero y todas las variables independientes se agregan a la derecha.
  2. ^ Esto puede mostrar, como error estándar, un mensaje de advertencia de que el resumen puede no ser confiable. No obstante, el resultado de 1 es correcto.
  3. ^ Para recuperar el valor de una matriz de longitud uno, el subíndice del índice es opcional.
  4. ^ Esto muestra, como error estándar , una lista de todos los paquetes de los que depende tidyverse . También puede mostrar dos errores que muestren conflicto. Los errores pueden ignorarse.

Referencias

  1. ^ abc Morandat, Frances; colina, Brandon; Osvaldo, Leo; Vitek, enero (11 de junio de 2012). "Evaluación del diseño del lenguaje R: objetos y funciones para el análisis de datos". Congreso Europeo sobre Programación Orientada a Objetos . 2012 : 104-131. doi :10.1007/978-3-642-31057-7_6 . Consultado el 17 de mayo de 2016 a través de SpringerLink.
  2. ^ Peter Dalgaard (29 de febrero de 2024). "Se lanza R 4.3.3" . Consultado el 1 de marzo de 2024 .
  3. ^ ab "R - Directorio de software libre". directorio.fsf.org . Consultado el 26 de enero de 2024 .
  4. ^ "Guiones R". mercurio.webster.edu . Consultado el 17 de julio de 2021 .
  5. ^ "Familia de formatos de datos R (.rdata, .rda)". Loc.gov . 9 de junio de 2017 . Consultado el 17 de julio de 2021 .
  6. ^ ab Hornik, Kurt; El equipo R Core (12 de abril de 2022). "Preguntas frecuentes sobre R". La red integral de archivos de R. 3.3 ¿Cuáles son las diferencias entre R y S? Archivado desde el original el 28 de diciembre de 2022 . Consultado el 27 de diciembre de 2022 .
  7. ^ "Introducción". El manual de Julia . Archivado desde el original el 20 de junio de 2018 . Consultado el 5 de agosto de 2018 .
  8. ^ Giorgi, Federico M.; Ceraolo, Carmín; Mercatelli, Daniele (27 de abril de 2022). "El lenguaje R: un motor para la bioinformática y la ciencia de datos". Vida . 12 (5): 648. Bibcode : 2022Vida...12..648G. doi : 10.3390/vida12050648 . PMC 9148156 . PMID  35629316. 
  9. ^ Ihaka, Ross. "El Proyecto R: una breve historia y reflexiones sobre el futuro" (PDF) . pag. 12. Archivado (PDF) desde el original el 28 de diciembre de 2022 . Consultado el 27 de diciembre de 2022 . Nos propusimos desarrollar un lenguaje suficiente para impartir cursos de introducción a la estadística en Auckland.
  10. ^ Hornik, Kurt; El equipo R Core (12 de abril de 2022). "Preguntas frecuentes sobre R". La red integral de archivos de R. 2.13 ¿Qué es la Fundación R?. Archivado desde el original el 28 de diciembre de 2022 . Consultado el 28 de diciembre de 2022 .
  11. ^ Ihaka, Ross. "R: Historia pasada y futura" (PDF) . pag. 4. Archivado (PDF) desde el original el 28 de diciembre de 2022 . Consultado el 28 de diciembre de 2022 .
  12. ^ Ihaka, Ross (5 de diciembre de 1997). "Nueva versión R para Unix". stat.ethz.ch.Archivado desde el original el 12 de febrero de 2023 . Consultado el 12 de febrero de 2023 .
  13. ^ Ihaka, Ross. "El Proyecto R: una breve historia y reflexiones sobre el futuro" (PDF) . pag. 18. Archivado (PDF) desde el original el 28 de diciembre de 2022 . Consultado el 27 de diciembre de 2022 .
  14. ^ abc Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 90.ISBN 0-201-71058-7.
  15. ^ ab Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 105.ISBN 0-201-71058-7.
  16. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 155.ISBN 0-201-71058-7.
  17. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 146.ISBN 0-201-71058-7.
  18. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 148.ISBN 0-201-71058-7.
  19. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 156.ISBN 0-201-71058-7.
  20. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 157.ISBN 0-201-71058-7.
  21. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 170.ISBN 0-201-71058-7.
  22. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 175.ISBN 0-201-71058-7. El coeficiente de determinación siempre está entre 0 y 1...
  23. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 175.ISBN 0-201-71058-7.
  24. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 4.ISBN 978-1-449-35901-0.
  25. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 20.ISBN 978-1-449-35901-0. Un script R es simplemente un archivo de texto sin formato en el que se guarda el código R.
  26. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 7.ISBN 978-1-449-35901-0.
  27. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 8.ISBN 978-1-449-35901-0.
  28. ^ abc Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 77.ISBN 978-1-449-35901-0.
  29. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 37.ISBN 978-1-449-35901-0.
  30. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 38.ISBN 978-1-449-35901-0.
  31. ^ ab Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 10.ISBN 978-1-449-35901-0.
  32. ^ abc Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 39.ISBN 978-1-449-35901-0.
  33. ^ abc Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 42.ISBN 978-1-449-35901-0.
  34. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 81.ISBN 978-1-449-35901-0.
  35. ^ ab Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 41.ISBN 978-1-449-35901-0.
  36. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 49.ISBN 978-1-449-35901-0.
  37. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 50.ISBN 978-1-449-35901-0.
  38. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 25.ISBN 0-201-71058-7.
  39. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 23.ISBN 0-201-71058-7.
  40. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 24.ISBN 0-201-71058-7.
  41. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 55.ISBN 978-1-449-35901-0. Los marcos de datos son la versión bidimensional de una lista.
  42. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 55.ISBN 978-1-449-35901-0. Son, de lejos, la estructura de almacenamiento más útil para el análisis de datos[.]
  43. ^ ab Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 173.ISBN 978-1-449-35901-0.
  44. ^ ab Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 185.ISBN 978-1-449-35901-0.
  45. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 165.ISBN 978-1-449-35901-0.
  46. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 69.ISBN 978-1-449-35901-0.
  47. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 80.ISBN 978-1-449-35901-0.
  48. ^ ab Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 16.ISBN 978-1-449-35901-0.
  49. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 29.ISBN 978-1-449-35901-0.
  50. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 13.ISBN 978-1-449-35901-0.
  51. ^ ab Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 14.ISBN 978-1-449-35901-0.
  52. ^ Schach, Stephen R. (1990). Ingeniería de software . Editores incorporados de Aksen Associates. pag. 231.ISBN 0-256-08515-3.
  53. ^ Derribado, Douglas; Clark, Jeffrey (2003). Estadísticas de negocios . Barrón. pag. 163.ISBN 0-7641-1983-4.
  54. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 95.ISBN 0-201-71058-7.
  55. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 314.ISBN 0-201-71058-7.
  56. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 17.ISBN 978-1-449-35901-0.
  57. ^ Equipo central de R. "Imprimir valores". Documentación R. Fundación R para Computación Estadística . Consultado el 30 de mayo de 2016 .
  58. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 147.ISBN 978-1-449-35901-0. R llama a imprimir cada vez que muestra un resultado en la ventana de su consola.
  59. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 17.ISBN 978-1-449-35901-0. R ejecutará todo el código del cuerpo y luego devolverá el resultado de la última línea de código.
  60. ^ Grolemund, Garrett (2014). Programación práctica con R. O'Reilly. pag. 82.ISBN 978-1-449-35901-0. Tenga cuidado de no confundir =con ==. =hace lo mismo que <-.
  61. ^ ab Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 256.ISBN 0-201-71058-7.
  62. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 257.ISBN 0-201-71058-7.
  63. ^ a b C Wickham, Hadley; Cetinkaya-Rundel, mía; Grolemund, Garrett (2023). R para ciencia de datos, segunda edición . O'Reilly. pag. xiii. ISBN 978-1-492-09740-2.
  64. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 133.ISBN 0-201-71058-7.
  65. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 134.ISBN 0-201-71058-7.
  66. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 266.ISBN 0-201-71058-7.
  67. ^ Weiss, Neil A. (2002). Estadística elemental, quinta edición . Addison-Wesley. pag. 265.ISBN 0-201-71058-7.
  68. ^ a b C Wickham, Hadley; Cetinkaya-Rundel, mía; Grolemund, Garrett (2023). R para ciencia de datos, segunda edición . O'Reilly. pag. xvii. ISBN 978-1-492-09740-2.
  69. ^ Cámaras, John M. (2020). "S, R y ciencia de datos". El Diario R. 12 (1): 462–476. doi : 10.32614/RJ-2020-028 . ISSN  2073-4859. El lenguaje R y el software relacionado desempeñan un papel importante en la informática para la ciencia de datos. ... Los paquetes R proporcionan herramientas para una amplia gama de propósitos y usuarios.
  70. ^ ab Hornik, Kurt (2012). "La red integral de archivos de R". Estadísticas computacionales de WIRE . 4 (4): 394–398. doi :10.1002/wics.1212. ISSN  1939-5108. S2CID  62231320.
  71. ^ Kurt Hornik (23 de abril de 1997). "Anunciar: CRAN". r-ayuda . Wikidata  Q101068595..
  72. ^ "El estado de los espejos CRAN". cran.r-project.org . Consultado el 30 de diciembre de 2022 .
  73. ^ "CRAN - Paquetes contribuidos". cran.r-project.org . Consultado el 29 de diciembre de 2022 .
  74. ^ Talbot, Justin; DeVito, Zachary; Hanrahan, Pat (1 de enero de 2012). "Respuesta: un compilador basado en seguimiento y una máquina virtual paralela para código vectorial en R". Actas de la 21ª conferencia internacional sobre arquitecturas paralelas y técnicas de compilación . ACM. págs. 43–52. doi :10.1145/2370816.2370825. ISBN 9781450311823. S2CID  1989369.
  75. ^ Jackson, Joab (16 de mayo de 2013). TIBCO ofrece R gratuito a la empresa. Mundo PC . Consultado el 20 de julio de 2015.
  76. ^ "Mirando hacia el futuro de R en Azure SQL y SQL Server". 30 de junio de 2021 . Consultado el 7 de noviembre de 2021 .