Capítulo 1 Introducción

R es un programa estadístico y de programación, el cual le permite al usuario hacer uso de funciones (en paquetes) ya definidas o la creación de funciones propias para resolver problemas específicos. Muchas de las funciones presentan un gran detalle en los resultados, haciendo fácil la interpretación de los mismos.

1.1 Instalación de R y RStudio

R es el motor, donde se realizan las operaciones, RStudio es el chasis, lo que le permite al usuario interactuar con el motor, es una interfaz de desarrollo que facilita las tareas en un proyecto.

Primero hay que instalar R:

  1. Ir a R
  2. Descargar la versión dependiendo del sistema operativo (Figura 1.1)
Repositorio CRAN para descargar R

Figura 1.1: Repositorio CRAN para descargar R

Después de instalar R hay que instalar RStudio:

  1. Ir a RStudio
  2. Descargar RStudio Desktop, la versión libre (Free)

1.2 Paquetes

La instalación de R básica trae una serie de paquetes (librerías) instaladas, que funcionan para cosas básicas y sencillas.

Para instalar paquetes de forma interactiva se va a la sección de paquetes (packages), se hace click en instalar (install), como se muestra en la Figura 1.2, y se escribe el o los nombres de los paquetes a instalar, separados por espacios.

Como instalar paquetes de forma manual

Figura 1.2: Como instalar paquetes de forma manual

La forma más práctica de instalar (actualizar) paquetes es por medio de código, usando install.packages("paquete").

Para cargar paquetes y sus funciones durante una sesión de R se usa la función library(paquete). Cabe mencionar que en el orden que se carguen los paquetes así se habilitaran las funciones, y si hay funciones con el mismo nombre en diferentes paquetes, la que se va a habilitar por defecto es la del ultimo paquete cargado. Una forma de solucionar un conflicto de este tipo o llamar una función de un paquete sin cargarlo es por medio de paquete::funcion, donde se usa del paquete deseado la función correspondiente (Ejemplo dplyr::select).

install.packages("devtools")
library(lubridate)
library(tidyverse)

1.3 Ayuda en R

Para buscar ayuda sobre funciones y cuales argumentos requiere se puede usar ?funcion, o se para sobre la función y se apreta F1.

?mean

1.4 RMarkdown

Un documento R Markdown es un tipo de documento que permite mezclar texto con código, manteniendo el análisis y los resultados en un mismo lugar. La interfaz y estructura típica se muestran en la Figura 1.3. Cuando ejecuta el código dentro del documento el resultado aparece por debajo del código.

Estructura de un documento RMarkdown

Figura 1.3: Estructura de un documento RMarkdown

Todo documento empieza con el encabezado YAML, que se define entre guiones consecutivos (---). Aquí se definen las características generales del documento:

  • titulo (‘title’)
  • autor (‘author’)
  • fecha (‘date’)
  • tipo de documento (‘output’)
  • etc

Idealmente todo bloque de código debiera llevar un nombre para poder identificarlo, así como su resultado. Para ejecutar una sección de código se puede hacer click en el botón verde de Run dentro de la sección o colocando el cursor dentro de la sección y ejecutando Ctrl+Shift+Enter (Windows) o Cmd+Shift+Enter (Mac). Así de fácil!

Se puede agregar una nueva sección haciendo click en Insert Chunk o ejecutando Ctrl+Alt+I (Windows) o Cmd+Option+I (Mac).

1.4.1 Tipos de resultados

Se pueden tener resultados de diferentes tipos, los cuales se muestran a continuación.

1.4.1.1 Consola

Podemos crear diferentes objetos dentro de la sección como si fuera la consola de R. Creemos un objeto que contenga los números del 1 al 15.

numeros <- seq_len(15)
numeros
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

Podemos desplegar tablas (Tabla 1.1). La apariencia va a cambiar dependiendo el formato de salida y va a estar sujeta a la opción df_print en el encabezado YAML, a menos de que se sobre-escriba en el código. Para darle numero y etiqueta a una tabla se debe usar la función kable del paquete knitr (Xie, 2014, 2015).

mtcars %>% 
  knitr::kable(caption = 'Datos de diferentes carros')
Tabla 1.1: Datos de diferentes carros
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

1.4.1.2 Gráficos

Gráficos de ggplot2 o cualquier otro gráfico estático son resultados que se pueden desplegar. Opciones para el control sobre las figura van a empezar con fig. en el encabezado del código (como se hace en el siguiente ejemplo, Figura ?? donde se ajusta el ancho a 6 pulgadas - fig.width=6).

q = ggplot(mtcars, aes(wt,mpg,col=factor(cyl))) + 
  geom_point(size=2,shape=1) + 
  theme_bw() + 
  labs(x='Peso',y='Millaje',col='Cilindros')
q
Grafico estatico

Figura 1.4: Grafico estatico

1.4.1.3 Widgets HTML

Si el análisis en R involucra componentes interactivos, estos también son compatibles con los resultados en el cuaderno o archivo HTML. La opción eval=knitr::is_html_output() se incluye para que el código sea evaluado únicamente cuando el formato de salida es HTML, ya que estos no pueden desplegarse en PDF o Word.

El siguiente código genera un gráfico interactivo (Figura 1.5).

dygraph(nhtemp, main = "Temperaturas de New Haven") %>% 
  dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
## Registered S3 method overwritten by 'xts':
##   method     from
##   as.zoo.xts zoo

Figura 1.5: Ejemplo de grafico interactivo

En la Figura 1.6 se muestra la versión interactiva de la Figura ??, anteriormente generada.

ggplotly(q)

Figura 1.6: Version interactiva del grafico estatico

1.4.2 Formulas

Expresiones matemáticas y formulas se pueden desplegar en linea, dentro del cuerpo del texto (\(A = \pi*r^{2}\)) o por separado \[E = mc^{2}\] Para escribir estas expresiones se usa la metodología o lenguaje LaTeX.

1.4.3 Importando datos

Los documentos R Markdown usan una dirección relativa a la ubicación del archivo.

dat <- import("data/LungCapData2.csv")

1.4.4 Cálculos en linea

Siempre que un valor exista dentro de un objeto guardado, este se puede acceder para ser desplegado en el cuerpo del documento. Esto se realiza escribiendo código entre comillas invertidas, como por ejemplo round(mean(airquality$Temp), 2), lo que resulta en 77.88, que es la temperatura media en grados Fahrenheit.

1.4.5 Importando figuras

La mejor manera es usando el paquete knitr. Aquí se ajusta no el ancho de la figura directamente sino que se le dice que se ajuste a un 50% del ancho disponible. Existen otras opciones que empiezan con out.. En la Figura 1.7 se ajusta el ancho de salida con out.width='50%'.

knitr::include_graphics('images/r_rocks.jpg')
R Rocks

Figura 1.7: R Rocks

1.4.6 Salvando y compartiendo

Los documentos R Markdown tienen como extensión .Rmd. Cuando se crea y se salva un cuaderno se crea un archivo adjunto con extensión .nb.html. Este archivo contiene una copia renderizada del cuaderno, que puede ser visualizada en cualquier navegador. Cuando se abre el archivo .nb.html en un navegador se va a tener la opción de descargar el código original (.Rmd).

Para previsualizar el cuaderno renderizado (.nb.html) haga click en Preview. La previsualización le muestra una copia renderizada del HTML. A diferencia de Knit (para otros documentos R Markdown), Preview no ejecuta ninguna sección de código, por lo que si una sección no se ha ejecutado en el editor el Preview no va a mostrar ningún resultado. La previsualización se actualiza cada vez que se salva el documento .Rmd.

1.4.6.1 Otros formatos

El cuaderno es un documento R Markdown. Se puede cambiar el formato de salida cambiando el orden en el encabezado YAML. En ese caso el Preview es reemplazado por Knit y genera un documento HTML corriente. También se puede generar desplegando el menú contextual haciendo click en la flecha junto a Preview. También se pueden crear documentos PDF o Word.

1.5 Recursos

Se presentan recursos a consultar para ahondar más en los temas presentados.

La guía definitiva de RMarkdown RMarkdown Definitive Guide, para consultas sobre documentos rmakrdown y sus opciones y configuraciones.

La guía definitiva de Bookdown Bookdown Guide. Este recurso cubre más sobre rmarkdown y expande sus funciones para la creación de libros.

Referencias

Xie, Y. (2014). knitr: A Comprehensive Tool for Reproducible Research in R. En V. Stodden, F. Leisch, & R. D. Peng (Eds.), Implementing Reproducible Computational Research. Chapman; Hall/CRC. http://www.crcpress.com/product/isbn/9781466561595

Xie, Y. (2015). Dynamic Documents with R and knitr (2nd ed.). Chapman; Hall/CRC. https://yihui.org/knitr/