Curso de Iniciación a R Ibon Martínez http://fdesnedecor.wordpress.com/ µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 1/51
Proyecto R - Qué es R? R es un lenguaje de programación para entorno estadístico y gráficos. La base del proyecto se encuentra en la siguiente dirección: http://www.r-project.org/ En esta dirección podremos descargar la última versión del programa así como acceder a toda la documentación, paquetes y librerías anexas, foros y otros proyectos relacionados. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 2/51
Proyecto R - Qué es R? Se trata de un proyecto de software libre, resultado de la implementación GNU del premiado lenguaje S. R y S-Plus -versión comercial de S- son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística, siendo además muy populares en el campo de la investigación biomédica, la bioinformática y las matemáticas financieras. R se distribuye bajo la licencia GNU GPL y está disponible para los sistemas operativos Windows, Macintosh, Unix y GNU/Linux. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 3/51
Proyecto R - CRAN El mantenimiento del Proyecto R se realiza a traves del CRAN The Comprehensive R Archive Network donde se encuentran las últimas versiones del programa R y los paquetes anexos. El Mirror a en España es http://cran.es.r-project.org/. a es un sitio Web que contiene una réplica exacta de otro. Estas réplicas u espejos se suelen crear para facilitar grandes descargas y facilitar el acceso a la información aun cuando haya fallos en el servicio del servidor principal µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 4/51
Proyecto R - Propiedades La capacidad de combinar, sin fisuras, análisis preempaquetados con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 5/51
Proyecto R - Propiedades La capacidad de combinar, sin fisuras, análisis preempaquetados con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones. Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 5/51
Proyecto R - Propiedades La capacidad de combinar, sin fisuras, análisis preempaquetados con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones. Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos. La comunidad de R es muy dinámica, con gran crecimiento del número de paquetes, e integrada por estadísticos de gran renombre (ej., J. Chambers, L. Terney, B. Ripley, D. Bates,... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 5/51
Proyecto R - Propiedades La capacidad de combinar, sin fisuras, análisis preempaquetados con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones. Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos. La comunidad de R es muy dinámica, con gran crecimiento del número de paquetes, e integrada por estadísticos de gran renombre (ej., J. Chambers, L. Terney, B. Ripley, D. Bates,... ). Hay extensiones específicas a nuevas áreas como bioinformática, geoestadística y modelos gráficos. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 5/51
Proyecto R - Propiedades La capacidad de combinar, sin fisuras, análisis preempaquetados con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones. Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos. La comunidad de R es muy dinámica, con gran crecimiento del número de paquetes, e integrada por estadísticos de gran renombre (ej., J. Chambers, L. Terney, B. Ripley, D. Bates,... ). Hay extensiones específicas a nuevas áreas como bioinformática, geoestadística y modelos gráficos. Es un lenguaje orientado a objetos. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 5/51
Proyecto R - Instalación Depende del sistema operativo, pero todo se puede encontrar en http://cran.es.r-project.org/bin Para Windows se puede obtener un ejecutable desde http://cran.es.r-project.org/bin/windows/base Al ejecutar el archivo se instalará el sistema base y los paquetes recomendados. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 6/51
Proyecto R - Paquetes R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Podemos encontrarlos en http://cran.es.r-project.org/src/contrib/packages.html Tipos de paquetes: Los que forman parte del sistema base (ctest, graphics,... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 7/51
Proyecto R - Paquetes R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Podemos encontrarlos en http://cran.es.r-project.org/src/contrib/packages.html Tipos de paquetes: Los que forman parte del sistema base (ctest, graphics,... ). Los que no son parte del sistema base, pero son recommended (xlsx, survival, nlme,... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 7/51
Proyecto R - Paquetes R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Podemos encontrarlos en http://cran.es.r-project.org/src/contrib/packages.html Tipos de paquetes: Los que forman parte del sistema base (ctest, graphics,... ). Los que no son parte del sistema base, pero son recommended (xlsx, survival, nlme,... ). Otros paquetes (UsingR, foreing,... ). Éstos se han de seleccionar e instalar individualmente. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 7/51
Proyecto R - Documentación Los manuales de R, incluidos en toda instalación. An introduction to R a. a Documento de obligada lectura µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 8/51
Proyecto R - Documentación Los manuales de R, incluidos en toda instalación. An introduction to R a. Writing R extensions. a Documento de obligada lectura µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 8/51
Proyecto R - Documentación Los manuales de R, incluidos en toda instalación. An introduction to R a. Writing R extensions. R data import/export. a Documento de obligada lectura µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 8/51
Proyecto R - Documentación Los manuales de R, incluidos en toda instalación. An introduction to R a. Writing R extensions. R data import/export. The R language definition. a Documento de obligada lectura µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 8/51
Proyecto R - Documentación Los manuales de R, incluidos en toda instalación. An introduction to R a. Writing R extensions. R data import/export. The R language definition. R installation and administration. a Documento de obligada lectura µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 8/51
Primeros pasos - Inicio Iniciar una sesión de R Hacer doble-click en el icono. Se abrirá Rgui.exe. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 9/51
Primeros pasos - Inicio Iniciar una sesión de R Hacer doble-click en el icono. Se abrirá Rgui.exe. Desde una ventana del sistema ejecutar Rterm.exe. Parecido a R en Unix o Linux. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 9/51
Primeros pasos - Inicio Iniciar una sesión de R Hacer doble-click en el icono. Se abrirá Rgui.exe. Desde una ventana del sistema ejecutar Rterm.exe. Parecido a R en Unix o Linux. Iniciar R desde Tinn-R. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 9/51
Primeros pasos - GUI de R El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R: JGR o Java GUI for R, una terminal de R multiplataforma basada en Java. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 10/51
Primeros pasos - GUI de R El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R: JGR o Java GUI for R, una terminal de R multiplataforma basada en Java. R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en tcltk. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 10/51
Primeros pasos - GUI de R El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R: JGR o Java GUI for R, una terminal de R multiplataforma basada en Java. R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en tcltk. RExcel, que permite usar R y Rcmdr desde Microsoft Excel. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 10/51
Primeros pasos - GUI de R El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R: JGR o Java GUI for R, una terminal de R multiplataforma basada en Java. R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en tcltk. RExcel, que permite usar R y Rcmdr desde Microsoft Excel. rggobi, una interfaz a GGobi para visualización. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 10/51
Primeros pasos - GUI de R El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R: JGR o Java GUI for R, una terminal de R multiplataforma basada en Java. R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en tcltk. RExcel, que permite usar R y Rcmdr desde Microsoft Excel. rggobi, una interfaz a GGobi para visualización. RKWard, basado en KDE. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 10/51
Primeros pasos - GUI de R µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 11/51
Primeros pasos - Primera sesión > rnorm(3) [1] -0.39413467 0.08327595-0.63666036 > x <- rnorm(3) > summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. -0.6043-0.5263-0.4484-0.4339-0.3487-0.2490 > w <- summary(x) > w Min. 1st Qu. Median Mean 3rd Qu. Max. -0.6043-0.5263-0.4484-0.4339-0.3487-0.2490 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 12/51
Primeros pasos - R como calculadora > 2 + 2 [1] 4 > sqrt(10) [1] 3.162278 > 2 * 3 * 4 * 5 [1] 120 > 1000 * (1 + 0.075)^5-1000 [1] 435.6293 > sin(c(0, 30, 45, 60, 90) * pi/180) [1] 0.0000000 0.5000000 0.7071068 0.8660254 1.0000000 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 13/51
Primeros pasos - La ayuda de R?rnorm µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start() µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start()?help.search µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start()?help.search help.search( normal ) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start()?help.search help.search( normal )?apropos µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start()?help.search help.search( normal )?apropos apropos( normal ) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start()?help.search help.search( normal )?apropos apropos( normal )?demo µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - La ayuda de R?rnorm help.start()?help.search help.search( normal )?apropos apropos( normal )?demo demo(graphics); demo(persp); demo(lm.glm) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 14/51
Primeros pasos - Paquetes adicionales Desde el menú Packages->Install package(s). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 15/51
Primeros pasos - Paquetes adicionales Desde el menú Packages->Install package(s). Primero nos pide seleccionar el CRAN mirror. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 15/51
Primeros pasos - Paquetes adicionales Desde el menú Packages->Install package(s). Primero nos pide seleccionar el CRAN mirror. Desde R, con install.packages(). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 15/51
Primeros pasos - Paquetes adicionales Desde el menú Packages->Install package(s). Primero nos pide seleccionar el CRAN mirror. Desde R, con install.packages(). Desde una ventana del sistema. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 15/51
Primeros pasos - Paquetes adicionales Desde el menú Packages->Install package(s). Primero nos pide seleccionar el CRAN mirror. Desde R, con install.packages(). Desde una ventana del sistema. Rcmd INSTALL paquete µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 15/51
Primeros pasos - Paquetes adicionales Desde el menú Packages->Install package(s). Primero nos pide seleccionar el CRAN mirror. Desde R, con install.packages(). Desde una ventana del sistema. Rcmd INSTALL paquete Desde la interface de Tinn-R. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 15/51
Primeros pasos - Un editor adecuado Por qué usar R desde un editor? El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 16/51
Primeros pasos - Un editor adecuado Por qué usar R desde un editor? El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística. Colores de sintaxis, completa paréntesis,... µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 16/51
Primeros pasos - Un editor adecuado Por qué usar R desde un editor? El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística. Colores de sintaxis, completa paréntesis,... Una interface común para otros paquetes estadísticos (SAS, XLispStat, Arc, Excel,... ), numéricos (Octave,... ) o procesador de texto (LaTeX,... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 16/51
Primeros pasos - Un editor adecuado Por qué usar R desde un editor? El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística. Colores de sintaxis, completa paréntesis,... Una interface común para otros paquetes estadísticos (SAS, XLispStat, Arc, Excel,... ), numéricos (Octave,... ) o procesador de texto (LaTeX,... ). Una buena elección: Tinn-R. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 16/51
Primeros pasos - El primer ejemplo Sea X una variable aleatorio con distribucióon exponencial de parámetro α y X 1,X 2,...,X n una muestra aleatoria simple. Se sabe que la distribución de Z = n min{x 1,X 2,...,X n } es exponencial de parámetro α. > alpha <- 0.01 > n <- 50 > m <- 1000 > datos <- matrix(rexp(n * m, alpha), ncol = n) > fz <- function(x) n * min(x) > z <- apply(datos, 1, fz) > mean(z) [1] 104.7786 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 17/51
Primeros pasos - El primer ejemplo > hist(z, freq = F) > points(dexp(0:600, alpha), type = "l") > ks.test(z, "pexp", alpha) One-sample Kolmogorov-Smirnov test data: z D = 0.045, p-value = 0.03495 alternative hypothesis: two-sided µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 18/51
Objetos de R - Qué son? Casi todo en R es un objeto, incluyendo funciones y estructuras de datos. Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls(). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 19/51
Objetos de R - Qué son? Casi todo en R es un objeto, incluyendo funciones y estructuras de datos. Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls(). Escribir el nombre de un objeto muestra su contenido: mean. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 19/51
Objetos de R - Qué son? Casi todo en R es un objeto, incluyendo funciones y estructuras de datos. Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls(). Escribir el nombre de un objeto muestra su contenido: mean. Para guardar el contenido del espacio de trabajo se pueden utilizar las funciones save.image() y save(<objetos>,file= nombre.rdata ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 19/51
Objetos de R - Qué son? Casi todo en R es un objeto, incluyendo funciones y estructuras de datos. Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls(). Escribir el nombre de un objeto muestra su contenido: mean. Para guardar el contenido del espacio de trabajo se pueden utilizar las funciones save.image() y save(<objetos>,file= nombre.rdata ). Se puede acceder a objetos de la carpeta de trabajo o del camino que especifiquemos. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 19/51
Objetos de R - Tipos de objetos Objetos del lenguaje Llamadas Expresiones Nombres Expresiones Funciones Lista de argumentos Código Entorno sin objeto: NULL µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 20/51
Objetos de R - Vector Vector: Colección ordenada de elementos del mismo tipo > x <- c(1, 2, 3) > x [1] 1 2 3 > y <- c(false, TRUE, TRUE) > y [1] FALSE TRUE TRUE > z <- c("a", "b", "c") > z [1] "a" "b" "c" µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 21/51
Objetos de R - Array Array: Generalización multidimensional del vector. Elementos del mismo tipo. > mat <- matrix(rnorm(9), ncol = 3) > mat [,1] [,2] [,3] [1,] -0.8546732-0.3515071 0.1269125 [2,] 1.7731786-0.3079295-0.0849302 [3,] -0.5036908-0.9784104-0.4556152 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 22/51
Objetos de R - Data frame data frame: Como el array, pero con columnas de diferentes tipos. Es el objeto más habitual para los datos experimentales. > dades <- data.frame(id = c("gen0", "genb", "genz"), subj1 = c(10, + 25, 33), subj2 = c(na, 34, 15), oncogen = c(true, TRUE, FALSE), + loc = c(1, 30, 125)) > dades ID subj1 subj2 oncogen loc 1 gen0 10 NA TRUE 1 2 genb 25 34 TRUE 30 3 genz 33 15 FALSE 125 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 23/51
Objetos de R - Factor factor: Tipo de vector para datos cualitativos. > x <- c(1, 2, 2, 1, 1, 2, 1, 2, 1) > x [1] 1 2 2 1 1 2 1 2 1 > x <- factor(c(1, 2, 2, 1, 1, 2, 1, 2, 1)) > x [1] 1 2 2 1 1 2 1 2 1 Levels: 1 2 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 24/51
Objetos de R - Lista list: vector generalizado. Cada lista está formada por componentes que pueden ser de distinto tipo. Son contenedores generales de datos. Muy flexibles, pero sin estructura. Muchas funciones devuelven una lista o conjunto de resultados de distinta longitud y distinto tipo. > una.lista <- list(vec = rnorm(5), mat = matrix(rnorm(4), ncol = 2)) > una.lista $vec [1] 0.1102119-0.1345766 0.7536878-0.8123064-0.6643130 $mat [,1] [,2] [1,] -0.43561329-1.400254 [2,] -0.06045704-1.749240 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 25/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode Tipo: Tipo de los vectores o arrays: double, character,...typeof µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode Tipo: Tipo de los vectores o arrays: double, character,...typeof Nombres: Etiquetas de los elementos individuales de un vector o lista: names µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode Tipo: Tipo de los vectores o arrays: double, character,...typeof Nombres: Etiquetas de los elementos individuales de un vector o lista: names Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode Tipo: Tipo de los vectores o arrays: double, character,...typeof Nombres: Etiquetas de los elementos individuales de un vector o lista: names Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim Dimnames: Nombres de las dimensiones de los arrays: dimnames µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode Tipo: Tipo de los vectores o arrays: double, character,...typeof Nombres: Etiquetas de los elementos individuales de un vector o lista: names Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim Dimnames: Nombres de las dimensiones de los arrays: dimnames Clase: Vector alfanumérico con la lista de las clases del objeto: class µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos Atributos de los objetos Modo: Tipo básico en un vector o array: lógico, entero, real, carácter,...mode Tipo: Tipo de los vectores o arrays: double, character,...typeof Nombres: Etiquetas de los elementos individuales de un vector o lista: names Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim Dimnames: Nombres de las dimensiones de los arrays: dimnames Clase: Vector alfanumérico con la lista de las clases del objeto: class Otros: Atributos de una serie temporal. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 26/51
Objetos de R - Atributos > x <- 1:15 > length(x) [1] 15 > y <- matrix(5, nrow = 3, ncol = 4) > dim(y) [1] 3 4 > is.vector(x) [1] TRUE > is.vector(y) [1] FALSE µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 27/51
Objetos de R - Atributos > x1 <- 1:5 > x2 <- c(1, 2, 3, 4, 5) > x3 <- "patata" > x4 <- TRUE > typeof(x1) [1] "integer" > typeof(x2) [1] "double" > typeof(x3) [1] "character" > typeof(x4) [1] "logical" µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 28/51
Objetos de R - Atributos > w <- data.frame(suj = c("suj 1", "Suj 2", "Suj 3"), Pes = c(56.1, + 73.6, 81.2), Alt = c(145, 165, 172)) > attributes(w) $names [1] "Suj" "Pes" "Alt" $row.names [1] 1 2 3 $class [1] "data.frame" µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 29/51
Objetos de R - Atributos > f1 <- function(x) { + return(2 * x) + } > attributes(f1) $source [1] "function(x) {return(2 * x)}" > is.function(f1) [1] TRUE > f1(4) [1] 8 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 30/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). Los nombres no pueden empezar con un número. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). Los nombres no pueden empezar con un número. R es case-sensitive : x!= X. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). Los nombres no pueden empezar con un número. R es case-sensitive : x!= X. Hay nombres reservados ( function, if,... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). Los nombres no pueden empezar con un número. R es case-sensitive : x!= X. Hay nombres reservados ( function, if,... ). Mejor evitar nombres que R usa (ej., c ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). Los nombres no pueden empezar con un número. R es case-sensitive : x!= X. Hay nombres reservados ( function, if,... ). Mejor evitar nombres que R usa (ej., c ). Las asignaciones se hacen con <- y se recomiendan los espacios. El signo = se reserva para los argumentos de las funciones. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Nombres Los nombres válidos para un objeto son combinaciones de letras, números y el punto (. ). Los nombres no pueden empezar con un número. R es case-sensitive : x!= X. Hay nombres reservados ( function, if,... ). Mejor evitar nombres que R usa (ej., c ). Las asignaciones se hacen con <- y se recomiendan los espacios. El signo = se reserva para los argumentos de las funciones. La función make.names convierte una cadena de texto en una cadena que pueda utilizarse como nombre de una variable en una matriz, data.frame,... µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 31/51
Objetos de R - Operadores aritméticos Suma +, resta -, multiplicación *, división / Potenciaˆ, raíz cuadrada sqrt División entera %/%, módulo: resto de la divisit on entera %% Logaritmos log, log10, log2, logb(x, base), exponencial exp Trigonométricas sin, cos, tan, asin, acos, atan Otras max, min, range, pmax, pmin, mean, median, var, sd, quantile, sum, prod, diff, cumsum, cumprod, cummax, cummin Podemos ver sus argumentos y su utilización mediante el comando help(función). Además, podemos ver algunos ejemplos con el comando example(función). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 32/51
Potencia gráfica de R R incluye muchas y variadas funciones para hacer gráficos. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 33/51
Potencia gráfica de R R incluye muchas y variadas funciones para hacer gráficos. El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 33/51
Potencia gráfica de R R incluye muchas y variadas funciones para hacer gráficos. El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros. Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 33/51
Potencia gráfica de R R incluye muchas y variadas funciones para hacer gráficos. El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros. Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell. También podemos ver un buen conjunto de ejemplos con demo(graphics). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 33/51
Potencia gráfica de R R incluye muchas y variadas funciones para hacer gráficos. El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros. Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell. También podemos ver un buen conjunto de ejemplos con demo(graphics). El comando plot es uno de los más utilizados para realizar gráficos. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 33/51
Potencia gráfica de R R incluye muchas y variadas funciones para hacer gráficos. El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros. Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell. También podemos ver un buen conjunto de ejemplos con demo(graphics). El comando plot es uno de los más utilizados para realizar gráficos. Si escribimos plot(x, y) donde x e y son vectores con n coordenadas, entonces R representa el gráfico de dispersión con los puntos de coordenadas (x i, y i ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 33/51
Potencia gráfica de R El principal comando para generar un gráfico en R es plot. Si generamos un vector aleatorio de dimensión 10. Uno de los argumentos más útiles es type cuyos parámetros pueden ser: p para puntos, l para líneas,... (?plot). Para representarlo gráficamente sólo tenemos que escribir: > x<-rnorm(10) x 2 1 0 1 2 2 4 6 8 10 Index > plot(x) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 34/51
Potencia gráfica de R Podemos modificar ciertos atributos del gráfico, por ejemplo el color de la línea (col) y el tamaño de la línea (lwd). R entiende como argumentos los nombres de los colores: red, green, blue,.... Podemos ver los colores predefinidos con la función colours(). Si escribimos: > plot(x, col= red, type= l, lwd=5) x 2 1 0 1 2 2 4 6 8 10 Index µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 35/51
Potencia gráfica de R Podemos modificar los atributos de los Nuestra primera gráfica en R límites del gráfico (xlim,ylim), las etiquetas de los ejes (xlab, ylab) y añadir un título (main). Podemos escribir: > plot(x, col= red, type= l, lwd=5, ylim=c(-4,4), xlab= Eje X, ylab= Eje Y, main= Nuestra primera gráfica en R ) Eje Y 4 2 0 2 4 2 4 6 8 10 Eje X µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 36/51
Potencia gráfica de R - Líneas y puntos Sobre un gráfico creado podemos añadir Nuestra primera gráfica en R información secundaria en forma de líneas (lines, abline) y puntos (points). Podemos escribir: > plot(x, col= red, type= l, lwd=5, ylim=c(-4,4), xlab= Eje X, ylab= Eje Y, main= Nuestra primera gráfica en R ) > points(x, col= blue,cex=3, pch=21, Eje Y 4 2 0 2 4 2 4 6 8 10 Eje X bg= green, lwd=3) > abline(lm(x seq(1,10)), lty=3, lwd=5, col= orange ) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 37/51
Potencia gráfica de R - Texto Otra opción interesante es la de introducir Nuestra primera gráfica en R texto en nuestras figuras, para ello utilizaremos el comando text que permite añadir texto en cualquier zona del gráfico. Podemos escribir: > plot(x, col = red, type = l, lwd = 5, ylim = c(-4,4), xlab = Eje X, ylab = Eje Y, main = Nuestra primera gráfica en R ) Eje Y 4 2 0 2 4 0.31 2.32 0.86 0.77 0.51 0.91 0.20 0.44 0.71 2.37 2 4 6 8 10 Eje X > points(x, col = red,cex = 3, pch = 21, bg = red ) > text(x, label = format(x, digits = 2, nsmall = 2), cex = 1, font = 2) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 38/51
Potencia gráfica de R - Otros comandos El comando plot no es el único que existe para generar figurar, hay otros como: boxplot, barplot, cdplot, pie,... Podemos escribir: 0 5 10 15 20 25 A B C D E F 0 5 10 15 A B C D E F > par(mfrow=c(2,2)) > boxplot(insectsprays$count Insect- Sprays$spray, col = red ) > barplot(tapply(insectsprays$count, IN- C D B E A F A B C D E F 0 5 10 15 DEX = InsectSprays$spray, FUN = mean )) > pie(table(insectsprays$spray), col = rainbow(6)) > barplot(tapply(insectsprays$count, INDEX = InsectSprays$spray, FUN = mean ), horiz = TRUE, col = orange ) µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 39/51
Potencia gráfica de R - Y más Podemos modificar márgenes exteriores de figuras y entre figuras (ver?par, opciones: oma, omi, mar, mai,... ). También gráficos 3D: persp, image, contour; histogramas: hist; gráficos de barras: barplot; gráficos de comparación de cuantiles, usados para comparar la distribución de dos variables, o la disribución de unos datos frente a un estándar: qqplot, qqnorm y, en paquete car, qq.plot. Notación matemática (plotmath) y expresiones de texto arbitrariamente complejas. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 40/51
Programación en R Principales instrucciones if(cond) expr if(cond) cons.expr else alt.expr for(var in seq) expr while(cond) expr switch repeat expr break next La expresión expr (también alt.expr) puede ser una expresión simple o compuestas. Uno de los errores más habituales es el olvido de los corchetes... alrededor de las instrucciones, i.e. después de if(... ) o for(... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 41/51
Programación en R - Comando if IF significa SI (condicional). Su funcionamiento es simple, se evalúa una condición, si es verdadera ejecuta un código, si es falsa, ejecuta otro código (o continúa con la ejecución del programa). > f4 <- function(x) { + if (x > 5) + print("x > 5") + else { + y <- runif(1) + print(paste("y es ", y)) + } + } > f4(3) [1] "y es 0.101673830067739" µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 42/51
Programación en R - Comando ifelse ifelse es una versión vectorizada del comando if > x <- c(4, 6, 7, 3, 1, 3) > ifelse(x > 5, x/2, x * 2) [1] 8.0 3.0 3.5 6.0 2.0 6.0 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 43/51
Programación en R - Comando for Una de las estructuras de repetición empleada en la programación de algoritmos para repetir un código (una o más sentencias de programación) dependiendo de un contador. > for (i in 1:5) cat("el valor de i es", i, "\n") el valor de i es 1 el valor de i es 2 el valor de i es 3 el valor de i es 4 el valor de i es 5 break sale de la instrucción µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 44/51
Programación en R - Comando while Existen otras estructuras de repetición que no dependen de un contador y si dependen de una condición. > x <- 2 > while (x < 100) { + x <- x^2 + print(x) + } [1] 4 [1] 16 [1] 256 Cuando el valor de x ha sido mayor o igual que 100, sale del bucle. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 45/51
Programación en R - Comando switch Podemos utilizar estructuras condicionales para ejecutar acciones. la función switch nos permite utilizar estas opciones > cadena <- "Owl Genomics - Curso de R, 2011" > switch("my", my = toupper(cadena), mn = tolower(cadena), ig = cadena) [1] "OWL GENOMICS - CURSO DE R, 2011" > switch("mn", my = toupper(cadena), mn = tolower(cadena), ig = cadena) [1] "owl genomics - curso de r, 2011" Según el primer parámetro, se ejecuta una acción u otra. µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 46/51
Importar datos con R Si vamos a trabajar con un conjunto de datos grande, es evidente, que no los vamos a introducir uno a uno. R tiene varias funciones incorporadas para facilitar esta tarea y pude importar datos desde una gran variedad de formatos (*.csv, *.xls, *.xlsx, *.sav, *.txt,... ). Vamos a centrarnos en las principales funciones: read.table() read.csv(), read.csv2() read.xls(), read.xlsx() a a Con la librería xlsx µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 47/51
Importar datos con R - read.table() Con la función read.table() podemos importar directamente un data.frame. La sintaxis completa de la función es: read.table (fichero, header=true,sep=,... ) Donde fichero es el nombre del fichero que queremos leer, header indica si nuestro fichero tiene los nombres de las variables en el encabezado y sep indica la separación existente entre las variables ( indica un espacio en blanco, \t indica un tabulador, ; indica punto y coma,... ). µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 48/51
Importar datos con R - read.csv() Hablamos de read.csv() y read.csv2() para leer ficheros con extensión *.csv a. En muchos países europeos, el estándar es utilizar la, (coma) como separador de los decimales y el ; (punto y coma) como separador de las variables. Si nuestro fichero sigue este estándar, podemos utilizar la función read.csv2 que tiene estos argumentos por defecto. a Los ficheros CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 49/51
Importar datos con R - read.csv() Precio;Area;Edad 52.00;830;6.2... > datos <- read.csv2("datos.csv", header = TRUE) > datos Precio Area Edad 1 52.00 830 6.2 2 54.75 710 7.5 3 59.75 900 1.9 > datos$edad [1] 6.2 7.5 1.9 Levels: 1.9 6.2 7.5 µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 50/51
Exportar datos con R Complementarias a las funciones ya vistas existen las funciones: write.table() write.csv(), write.csv2() write.xls(), write.xlsx() a a Con la librería xlsx µ ¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 p. 51/51