Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso Basico de R PDF
Curso Basico de R PDF
Francesc Carmona
fcarmona@ub.edu
15 de febrero de 2007
1. Introduccion 7
1.1. R y S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Obtencion y instalacion de R . . . . . . . . . . . . . . . . 10
1.3. Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Documentacion . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Ayudas sobre R . . . . . . . . . . . . . . . . . . . . . . . . 16
2. Empezamos 17
2.1. Inicio de una sesion en R . . . . . . . . . . . . . . . . . . 17
2.2. Una primera sesion . . . . . . . . . . . . . . . . . . . . . . 18
2.3. R como calculadora . . . . . . . . . . . . . . . . . . . . . . 19
2.4. Ayuda dentro del programa . . . . . . . . . . . . . . . . . 20
2.5. Instalacion de paquetes adicionales . . . . . . . . . . . . . 21
2.6. Usar R desde un editor . . . . . . . . . . . . . . . . . . . . 22
2.7. Un ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3. Objetos en R 24
3.1. Que 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 aritmeticas . . . . . . . . . . . . . . . . . . . 31
3.6. Operadores logicos . . . . . . . . . . . . . . . . . . . . . . 33
3.7. Discretizar datos . . . . . . . . . . . . . . . . . . . . . . . 35
3.8. Operaciones con conjuntos . . . . . . . . . . . . . . . . . 36
4. Vectores 37
4.1. Generacion de secuencias . . . . . . . . . . . . . . . . . . 37
4.2. Generacion de secuencias aleatorias . . . . . . . . . . . . 39
4.3. Seleccion de elementos de un vector . . . . . . . . . . . . 40
4.4. Valores perdidos . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5. Ordenacion 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. Combinacion de arrays . . . . . . . . . . . . . . . . . . . . 54
6. Data.frames 55
6.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . 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. Graficos 75
9.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.2. El comando plot . . . . . . . . . . . . . . . . . . . . . . . 76
9.3. Identificacion interactiva de datos . . . . . . . . . . . . . 80
9.4. Multiples graficos 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. Mas graficos . . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.10. Guardar los graficos . . . . . . . . . . . . . . . . . . . . . 87
10. Funciones 88
10.1. Definicion de funciones . . . . . . . . . . . . . . . . . . . . 88
10.2. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10.3. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.4. Control de ejecucion . . . . . . . . . . . . . . . . . . . . . 92
10.5. Cuando algo va mal . . . . . . . . . . . . . . . . . . . . . 95
10.6. Ejecucion no interactiva . . . . . . . . . . . . . . . . . . . 97
1.1. R y S
1. Introduccion
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 distribucion
estandar.
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 distribucion
estandar.
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 abrira 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 abrira 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 angulos 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 menu 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. Instalacion de paquetes adicionales
Windows:
Desde el menu 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).
Mas comodo, desde R,
install.packages(), update.packages(), etc.
Tambien permiten instalar si no eres root (especificar lib.loc).
2.6. Usar R desde un editor
funciones:
Constan de
lista de argumentos
codigo
entorno
3.2. Tipos de objetos
funciones:
Constan de
lista de argumentos
codigo
entorno
Clase: vector alfanumerico 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 aritmeticas
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 logicos
La funcion split(x,f)
> split(peso,trat)
> split(peso,trat)$A
La funcion 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) : descomposicion QR
6.1. Definicion
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 facilmente 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 actualizacion no es dinamica
> datos.df$D <- 1:4 # una nueva columna
> datos.df # aqu esta
> 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 lnea, se utiliza la instruccion
read.table en la forma:
> fichero.df <- read.table("c:/dir/mi.fichero",
+ header = TRUE, sep = "",
+ comment.char = "")
9.1. Introduccion
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 lneas.
> 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 mas complejas (longitud de los
segmentos que son alternativamente dibujados y no dibujados).
Los diagramas de caja son muy utiles para ver rapidamente las
principales caractersticas 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