layout: true background-image: url(figs/logoUAM.jpg) background-position: 0% 100% background-size: 15% --- class: inverse, center, middle background-image: url(figs/portada.jpg) background-size: cover # Primer contacto con R ### José Ramón Berrendero #### Departamento de Matemáticas #### Universidad Autónoma de Madrid --- # ¿Qué es R? R es un lenguaje de programación especialmente adaptado para el análisis de datos # ¿Qué es RStudio? Es una interfaz (entorno de desarrollo integrado) con un gran numero de herramientas que facilitan el trabajo con R ### Con R (y RStudio) podemos... - almacenar y manipular conjuntos de datos - visualizar los datos - ajustar a los datos modelos estadísticos - comunicar las conclusiones de nuestros análisis --- # Un poco de historia - Becker, Chambers y Wilks desarrollaron el lenguaje S en los años 70 - Implementación comercial: SPlus, muy utilizado en los años 90 - Ross Ihaka y Robert Gentleman (R & R) escriben R en 1996 - Desde entonces [CRAN](https://cran.r-project.org/) (Comprehensive R Archive Network) no ha parado de crecer. Incluye contribuciones de los usuarios - Actualmente, es desarrollado y mantenido por un equipo de unas 20 personas, el llamado *core group* - En febrero de 2011 se publica la primera versión de RStudio - Hadley Wickham, desde RStudio, populariza un conjunto de paquetes (conocido como [tidyverse](https://www.tidyverse.org/)) que tiene gran éxito entre los usuarios Más información: [R generation](https://doi.org/10.1111/j.1740-9713.2018.01169.x), un artículo que resume la historia de los primeros 20 años de R --- # Algunos enlaces - La página de R: [www.r-project.org/](http://www.r-project.org/) - Documentación oficial: [cran.r-project.org/manuals.html](http://cran.r-project.org/manuals.html) - Blogs: [www.r-bloggers.com](http://www.r-bloggers.com/) - Paquetes de R: [cran.at.r-project.org/web/packages/](http://cran.at.r-project.org/web/packages/) - RStudio: [www.rstudio.com/ide/](http://www.rstudio.com/ide/) --- # Una descripción de la interfaz - La consola - El editor de texto - La ventana del entorno de trabajo - La ventana de la ayuda, los gráficos y el explorador --- # Una descripción de la interfaz <img src="figs/rstudio.jpg" width="600" style="display: block; margin: auto;" /> --- # Sobre la mejor forma de trabajar - Ficheros `.R` (texto con código) y ficheros `.RData` (objetos de R) - Mantener separados los ficheros de proyectos diferentes - Para ello, abrir un proyecto nuevo cada vez que se empieza un trabajo - Escribir código en lugar de trabajar de forma interactiva - Mejor guardar el código que los resultados (reproducibilidad) --- # Características básicas - Orientado a objetos - Distingue mayúsculas y minúsculas - Los nombres de objetos empiezan por una letra - Operador de asignación: `x <- 10` - Combinar objetos: `x <- c(2, 3, 4)` - Lista de objetos en el área de trabajo `ls()` - Borrar objetos: `rm()` - Obtener ayuda: `help()` o `help.search()` --- name: vectores # Vectores: comandos para generarlos ```r 1:5 ``` ``` ## [1] 1 2 3 4 5 ``` ```r seq(2, 10, 2) ``` ``` ## [1] 2 4 6 8 10 ``` ```r rep(c(1,3), 4) ``` ``` ## [1] 1 3 1 3 1 3 1 3 ``` --- # Vectores: reciclaje R automáticamente *recicla* (repite los valores) hasta llegar a la dimensión requerida: ```r 3 + c(1,2,3,4) ``` ``` ## [1] 4 5 6 7 ``` ```r c(1,2) + c(7,8,9,10) ``` ``` ## [1] 8 10 10 12 ``` --- # Vectores: filtrado Cómo seleccionar algunas de las coordenadas: ```r x <- (1:5)^2 x[2] ``` ``` ## [1] 4 ``` ```r x[c(2,5)] ``` ``` ## [1] 4 25 ``` ```r x[-c(2,5)] ``` ``` ## [1] 1 9 16 ``` --- name: factores # Factores Son las estructuras que se utilizan para manejar las variables cualitativas en los análisis estadísticos. Se pueden contemplar como un vector al que se añade un poco más de información consistente en los distintos valores presentes en el vector, llamados *niveles*. Se crean usando el comando `factor()`: ```r respuesta <- c('si', 'no', 'si', 'no', 'no', 'no', 'si') respuesta <- factor(respuesta) respuesta ``` ``` ## [1] si no si no no no si ## Levels: no si ``` --- name: matrices # Matrices Las matrices **son también vectores** pero con dos atributos adicionales: número de filas y número de columnas Los vectores **no son matrices con una fila o con una columna** Para crear una matriz: ```r matrix(1:3, nrow = 2, ncol = 3) ``` ``` ## [,1] [,2] [,3] ## [1,] 1 3 2 ## [2,] 2 1 3 ``` --- # Algunas operaciones útiles con matrices ```r A = matrix(1:4,2,2) ; B = matrix(5:8,2,2) ``` - Producto matricial: ```r A %*% B ``` ``` [,1] [,2] [1,] 23 31 [2,] 34 46 ``` - Determinante: ```r det(A) ``` ``` [1] -2 ``` --- - Producto componente a componente: ```r A * B ``` ``` [,1] [,2] [1,] 5 21 [2,] 12 32 ``` - Traspuesta: ```r t(A) ``` ``` [,1] [,2] [1,] 1 2 [2,] 3 4 ``` --- - Extraer la diagonal: ```r diag(A) ``` ``` [1] 1 4 ``` - Inversa: ```r solve(A) ``` ``` [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 ``` - Resolver un sistema de ecuaciones lineales `\(Ax=b\)`: ```r b = c(1,3) solve(A,b) ``` ``` [1] 2.5 -0.5 ``` --- - Autovalores y autovectores: ```r eigen(A) # Devuelve una lista ``` ``` eigen() decomposition $values [1] 5.3722813 -0.3722813 $vectors [,1] [,2] [1,] -0.5657675 -0.9093767 [2,] -0.8245648 0.4159736 ```