Upload
hoangtu
View
213
Download
0
Embed Size (px)
Citation preview
Curso de Iniciación a RIbon 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 yotros 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 lainvestigación biomédica, la bioinformática y las matemáticas financieras. R se
distribuye bajo la licencia GNU GPL y está disponible para los sistemasoperativos 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 versionesdel programa R y los paquetes anexos. El Mirrora en España es
http://cran.es.r-project.org/.
aes un sitio Web que contiene una replica exacta de otro. Estas replicas u espejos
se suelen crear para facilitar grandes descargas y facilitar el acceso a la informacion 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” conaná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” conaná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” conaná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 depaquetes, 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” conaná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 depaquetes, 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” conaná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 depaquetes, 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 sufuncionalidad. 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 sufuncionalidad. 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 sufuncionalidad. 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 einstalar 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 Ra.
aDocumento 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 Ra.
• Writing R extensions.
aDocumento 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 Ra.
• Writing R extensions.
• R data import/export.
aDocumento 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 Ra.
• Writing R extensions.
• R data import/export.
• The R language definition.
aDocumento 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 Ra.
• Writing R extensions.
• R data import/export.
• The R language definition.
• R installation and administration.
aDocumento 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 Unixo 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 Unixo 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 proyectosabiertos 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 proyectosabiertos 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 entcltk.
´ µ ¸¹ ½ 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 proyectosabiertos 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 entcltk.
• 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 proyectosabiertos 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 entcltk.
• 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 proyectosabiertos 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 entcltk.
• 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 esuna 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 esuna 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 esuna 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 esuna 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
X1,X2, . . . , Xn una muestra aleatoria simple. Se sabe que la distribución deZ = n ·min {X1, X2, . . . , Xn} 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 utilizaremosls().
´ µ ¸¹ ½ 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 utilizaremosls().
• 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 utilizaremosls().
• 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 utilizaremosls().
• 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 queespecifiquemos.
´ µ ¸¹ ½ 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. Muyflexibles, 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 cadenaque 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(funcion). Además, podemos ver algunos ejemplos con el comandoexample(funcion).
´ µ ¸¹ ½ 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 dePaul 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 dePaul 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 dePaul 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 dePaul 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 (xi, yi).
´ µ ¸¹ ½ 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 vec-tor 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áfi-camente sólo tenemos que escribir:
> x<-rnorm(10)> plot(x)
2 4 6 8 10
−2
−1
01
2
Index
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 en-
tiende como argumentos los nombres delos colores: red, green, blue, . . . . Podemos
ver los colores predefinidos con la funcióncolours(). Si escribimos:
> plot(x, col=“red”, type=“l”, lwd=5)2 4 6 8 10
−2
−1
01
2
Index
x
´ µ ¸¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 – p. 35/51
Potencia gráfica de R
Podemos modificar los atributos de los
límites del gráfico (xlim,ylim), las etiquetasde 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=“EjeY”, main=“Nuestra primera gráfica en R”)
2 4 6 8 10
−4
−2
02
4
Nuestra primera gráfica en R
Eje X
Eje
Y
´ µ ¸¹ ½ 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
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=“EjeY”, main=“Nuestra primera gráfica en R”)
> points(x, col=“blue”,cex=3, pch=21,bg=“green”, lwd=3)
> abline(lm(xseq(1,10)), lty=3, lwd=5,col=“orange”)
2 4 6 8 10
−4
−2
02
4
Nuestra primera gráfica en R
Eje X
Eje
Y
´ µ ¸¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 – p. 37/51
Potencia gráfica de R - Texto
Otra opción interesante es la de introducir
texto en nuestras figuras, para ello utilizare-mos el comando text que permite añadir
texto en cualquier zona del gráfico. Pode-mos 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 = “red”,cex = 3, pch = 21, bg
= “red”)> text(x, label = format(x, digits = 2, nsmall
= 2), cex = 1, font = 2)
2 4 6 8 10
−4
−2
02
4
Nuestra primera gráfica en R
Eje X
Eje
Y
−0.44
−2.37
−0.71
0.86
0.20
0.77 0.51 0.31
0.91
2.32
´ µ ¸¹ ½ 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:> par(mfrow=c(2,2))
> boxplot(InsectSprays$count Insect-Sprays$spray, col = “red”)
> barplot(tapply(InsectSprays$count, IN-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”)
A B C D E F
05
1015
2025
A B C D E F
05
1015
A
B
C
D
E
F
AB
CD
EF
0 5 10 15
´ µ ¸¹ ½ 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áficosde barras: barplot ; gráficos de comparación de cuantiles, usados para
comparar la distribución de dos variables, o la disribución de unos datosfrente 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 (ocontinú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 parafacilitar esta tarea y pude importar datos desde una gran variedad de formatos
(*.csv, *.xls, *.xlsx, *.sav, *.txt, . . . ). Vamos a centrarnos en las principalesfunciones:
• read.table()
• read.csv(), read.csv2()
• read.xls(), read.xlsx()a
aCon 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 sepindica 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 *.csva.
En muchos países europeos, el estándar es utilizar la “,” (coma) comoseparador de los decimales y el “;” (punto y coma) como separador de las
variables. Si nuestro fichero sigue este estándar, podemos utilizar la funciónread.csv2 que tiene estos argumentos por defecto.
aLos ficheros CSV (del ingles 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;Edad52.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
aCon la librerıa xlsx
´ µ ¸¹ ½ http://fdesnedecor.wordpress.com/, Agosto 2011 – p. 51/51