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:
Después de instalar R hay que instalar RStudio:
- Ir a RStudio
- 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.
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.
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')
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
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
En la Figura 1.6 se muestra la versión interactiva de la Figura ??, anteriormente generada.
ggplotly(q)
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')
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/