Escolar Documentos
Profissional Documentos
Cultura Documentos
Francesc Carmona
fcarmona@ub.edu
15 de febrero de 2007
1. Introducción 7
1.1. R y S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Obtención y instalación de R . . . . . . . . . . . . . . . . 10
1.3. Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Documentación . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Ayudas sobre R . . . . . . . . . . . . . . . . . . . . . . . . 16
2. Empezamos 17
2.1. Inicio de una sesión en R . . . . . . . . . . . . . . . . . . 17
2.2. Una primera sesión . . . . . . . . . . . . . . . . . . . . . . 18
2.3. R como calculadora . . . . . . . . . . . . . . . . . . . . . . 19
2.4. Ayuda dentro del programa . . . . . . . . . . . . . . . . . 20
2.5. Instalación de paquetes adicionales . . . . . . . . . . . . . 21
2.6. Usar R desde un editor . . . . . . . . . . . . . . . . . . . . 22
2.7. Un ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3. Objetos en R 24
3.1. ¿Qué objetos? . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2. Tipos de objetos . . . . . . . . . . . . . . . . . . . . . . . 25
3.3. Atributos de los objetos . . . . . . . . . . . . . . . . . . . 28
3.4. Nombres para los objetos . . . . . . . . . . . . . . . . . . 30
3.5. Operaciones aritméticas . . . . . . . . . . . . . . . . . . . 31
3.6. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . 33
3.7. Discretizar datos . . . . . . . . . . . . . . . . . . . . . . . 35
3.8. Operaciones con conjuntos . . . . . . . . . . . . . . . . . 36
4. Vectores 37
4.1. Generación de secuencias . . . . . . . . . . . . . . . . . . 37
4.2. Generación de secuencias aleatorias . . . . . . . . . . . . 39
4.3. Selección de elementos de un vector . . . . . . . . . . . . 40
4.4. Valores perdidos . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5. Ordenación de vectores . . . . . . . . . . . . . . . . . . . 43
4.6. Vectores de caracteres . . . . . . . . . . . . . . . . . . . . 44
4.7. Factores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5. Arrays y matrices 47
5.1. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2. Operaciones con matrices . . . . . . . . . . . . . . . . . . 51
5.3. Combinación de arrays . . . . . . . . . . . . . . . . . . . . 54
6. Data.frames 55
6.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.2. La familia apply . . . . . . . . . . . . . . . . . . . . . . . . 58
6.3. Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7. Muchos objetos 63
7.1. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.2. Los objetos que tenemos . . . . . . . . . . . . . . . . . . . 64
7.3. En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8. Datos 70
8.1. Lectura de datos . . . . . . . . . . . . . . . . . . . . . . . 70
8.2. Guardar y leer datos . . . . . . . . . . . . . . . . . . . . . 71
8.3. Importar datos de Excel . . . . . . . . . . . . . . . . . . . 72
8.4. Exportar datos . . . . . . . . . . . . . . . . . . . . . . . . 74
9. Gráficos 75
9.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.2. El comando plot . . . . . . . . . . . . . . . . . . . . . . . 76
9.3. Identificación interactiva de datos . . . . . . . . . . . . . 80
9.4. Múltiples gráficos por ventana . . . . . . . . . . . . . . . . 81
9.5. Datos multivariantes . . . . . . . . . . . . . . . . . . . . . 82
9.6. Boxplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.7. Un poco de ruido . . . . . . . . . . . . . . . . . . . . . . . 84
9.8. Dibujar rectas . . . . . . . . . . . . . . . . . . . . . . . . . 85
9.9. Más gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.10. Guardar los gráficos . . . . . . . . . . . . . . . . . . . . . 87
10. Funciones 88
10.1. Definición de funciones . . . . . . . . . . . . . . . . . . . . 88
10.2. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10.3. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.4. Control de ejecución . . . . . . . . . . . . . . . . . . . . . 92
10.5. Cuando algo va mal . . . . . . . . . . . . . . . . . . . . . 95
10.6. Ejecución no interactiva . . . . . . . . . . . . . . . . . . . 97
1.1. R y S
1. Introducción
1.1. R y S
1.1. R y S
1.1. R y S
1.1. R y S
Los que no son parte del sistema base, pero son recommended
(ej., survival, nlme).
En GNU/Linux y Windows ya forman parte de la distribución
estándar.
1.3. Paquetes
Los que no son parte del sistema base, pero son recommended
(ej., survival, nlme).
En GNU/Linux y Windows ya forman parte de la distribución
estándar.
Writing R extensions.
R data import/export.
Otros documentos en
http://cran.es.r-project.org/other-docs.html
S-PLUS 6.0 for Unix. Guide to statistics. Vol. I & II. En
http://www.insightful.com/support/documentation.asp?DID=3
FAQ: http://cran.es.r-project.org/faqs.html
Windows:
Hacer doble-click en el icono. Se abrirá “Rgui”.
Desde una “ventana del sistema” ejecutar Rterm o desde
Inicio-Ejecutar...
C:\Archivos de programa\R\R-2.4.1\bin\Rterm.exe
parecido a R en Unix o Linux.
Iniciar R desde Tinn-R, XEmacs o un editor apropiado.
2. Empezamos
Windows:
Hacer doble-click en el icono. Se abrirá “Rgui”.
Desde una “ventana del sistema” ejecutar Rterm o desde
Inicio-Ejecutar...
C:\Archivos de programa\R\R-2.4.1\bin\Rterm.exe
parecido a R en Unix o Linux.
Iniciar R desde Tinn-R, XEmacs o un editor apropiado.
GNU/Linux:
Escribir “R” en una shell.
Iniciar R desde (X)Emacs (M-X R).
> 2+2
> sqrt(10)
> 2*3*4*5
> # Intereses sobre 1000 euros
> 1000*(1+0.075)^5 - 1000
> # R conoce pi
> pi
> # Circunferencia de la Tierra en el Ecuador en km
> 2*pi*6378
> # Convertimos ángulos a radianes y luego calculamos el seno
> sin(c(0,30,45,60,90)*pi/180)
2.4. Ayuda dentro del programa
?rnorm
help.start()
?help.search
help.search("normal")
?apropos
apropos("normal")
?demo
!Cuidado¡
Windows:
Desde el menú Packages->Install package(s)...
Primero nos pide seleccionar el “CRAN mirror”.
Desde R, con install.packages() como en GNU/Linux.
Desde una “ventana del sistema” o desde Inicio-Ejecutar...
Rcmd INSTALL paquete
Desde la interface de XEmacs.
2.5. Instalación de paquetes adicionales
Windows:
Desde el menú Packages->Install package(s)...
Primero nos pide seleccionar el “CRAN mirror”.
Desde R, con install.packages() como en GNU/Linux.
Desde una “ventana del sistema” o desde Inicio-Ejecutar...
Rcmd INSTALL paquete
Desde la interface de XEmacs.
GNU/Linux:
R CMD INSTALL paquete-x.y.z.tar.gz
Permite instalar aunque uno no sea root (especificar el dir).
Más cómodo, desde R,
install.packages(), update.packages(), etc.
También permiten instalar si no eres root (especificar lib.loc).
2.6. Usar R desde un editor
funciones:
Constan de
lista de argumentos
código
entorno
3.2. Tipos de objetos
funciones:
Constan de
lista de argumentos
código
entorno
Clase: vector alfanumérico con la lista de las clases del objeto: class
R es “case-sensitive”: x != X.
Otras consideraciones:
• El uso del “.” es distinto del de C++.
• Mejor evitar nombres que R usa (ej., “c”) (se puede arreglar).
> c <- 4; x <- c(3, 8); c
> rm(c); c
• Las asignaciones se hacen con "<-" y se recomiendan los
espacios. El signo "=" se reserva para los argumentos de las
funciones.
> x<-1:5 # Estilo incorrecto
> x <- 1:5 # Mucho mejor
3.5. Operaciones aritméticas
otras:
max, min, range, pmax, pmin, mean, median, var, sd, quantile
sum, prod, diff cumsum, cumprod, cummax, cummin
Ejemplo:
> data(presidents)
> help(presidents)
> range(presidents, na.rm = TRUE)
> which.min(presidents)# 28
> which.max(presidents)# 2
3.6. Operadores lógicos
La función split(x,f)
> split(peso,trat)
> split(peso,trat)$A
La función cut
> vv <- rnorm(100)
> cut1 <- cut(vv, 5)
> table(cut1)
>
> cut2 <- cut(vv, quantile(vv, c(0, 1/4, 1/2, 3/4, 1)))
> summary(cut2)
> class(cut2)
3.8. Operaciones con conjuntos
> sample(5)
> sample(5, 3)
> x <- 1:10
> sample(x)
> sample(x, replace = TRUE)
> sample(x, length = 2* length(x), replace = TRUE)
> probs <- x/sum(x)
> sample(x, prob = probs)
5.1. Definiciones
qr(A) : descomposición QR
6.1. Definición
7.1. Listas
R tiene una lista donde buscar los objetos accesibles: “the search
list”. Cargar un paquete extiende la “search list”.
Para obtener la lista de los directorios, llamados “databases”:
> search()
> library(MASS)
> search()
Para que un objeto o directorio sea fácilmente accesible lo
podemos poner en la “search list” de R. En el caso de un
data.frame, esto permite acceder directamente a las columnas por
su nombre.
> str(datos.df) # es un data.frame
> A # error
> attach(datos.df)
> A # ahora sı́
> plot(A,B) # en lugar de plot(datos.df$A,datos.df$B)
La actualización no es dinámica
> datos.df$D <- 1:4 # una nueva columna
> datos.df # aquı́ está
> D # pero aquı́ no
Para desconectar
> detach(objeto)
Para borrar objetos concretos
> rm(objetos)
Para leer un fichero simple, con los datos separados por espacios
en blanco, tabuladores o saltos de lı́nea, se utiliza la instrucción
read.table en la forma:
> fichero.df <- read.table("c:/dir/mi.fichero",
+ header = TRUE, sep = "",
+ comment.char = "")
9.1. Introducción
Tipos de puntos.
> plot(c(1, 10), c(1, 3), type = "n", axes = FALSE,
+ xlab = "", ylab="")
> points(1:10, rep(1, 10), pch = 1:10, cex = 2, col = "blue")
> points(1:10, rep(2, 10), pch = 11:20, cex = 2, col = "red")
> points(1:10, rep(3, 10), pch = 21:30, cex = 2,
+ col = "blue", bg = "yellow")
Tipos de lı́neas.
> plot(c(0, 10), c(0, 10), type = "n", xlab ="",
+ ylab ="")
> for(i in 1:10)
+ abline(0, i/5, lty = i, lwd = 2)
> for(i in 1:10)
+ abline(0, i/5, lty = i, lwd = 2)
lty permite especificaciones más complejas (longitud de los
segmentos que son alternativamente dibujados y no dibujados).
Los diagramas de caja son muy útiles para ver rápidamente las
principales caracterı́sticas de una variable cuantitativa, o comparar
entre variables.
> attach(Y)
> boxplot(weight)
> plot(sexo, weight)
> detach()
> boxplot(weight ~ sexo, data = Y,
+ col = c("red", "blue"))
Un ejemplo
> cubo <- function(n) {
+ sq <- function() n*n # aquı́ n no es un argumento
+ n*sq()
+ }
Principales instrucciones
if(cond) expr
if(cond) cons.expr else alt.expr
for(var in seq) expr
while(cond) expr
repeat expr
break
next
Con BATCH:
Rcmd BATCH mi.fichero.con.codigo.R