Introducción a R: Un lenguaje orientado a objetos
Luis Mariano Esteban, María Escorihuela
Escuela Universitaria Politécnica de La Almunia
Introducción a R
Introducción
R programming language
R es una implementación del lenguaje S desarrollado por Bell
Laboratories por Rick Becker, John Chambers y Allan Wilks
R fue creado por Robert Gentleman y Ross Ihaka
(Departamento de estadı́stica de la Universidad de Auckland)
Actualmente es desarrollado por el R Development Core
Team, del cual forma parte el propio Chambers
R es parte del GNU project y se construye como contribución
de Estadı́sticos y Universidades de todo el mundo
http://www.r-project.org
La documentación en castellano sobre R es gratuita y puede
bajarse de http://cran.r-project.org/other-docs.html
Introducción a R
Introducción
Primeros pasos
Las operaciones matemáticas más básicas se consiguen con los
sı́mbolos +,−,∗,/ y ^
Por ejemplo, para calcular (7 · 3) + 232
> 7*3+3/2^2
[1] 21.75
Las funciones más comunes también estan implementadas en R:
log(), log10(), exp(), sin(), cos(), tan(), sqrt()
La forma mas común de asignar un valor a un objeto se construye
con el sı́mbolo <-
> x<-12.34
> x
[1] 12.34
Introducción a R
Vectores
Vectores
Para crear un vector, se utiliza la orden c()
> x<-c(0,2,5,1)
> x
[1] 0 2 5 1
Existen funciones para realizar operaciones sencillas sobre un
vector
> max(x) > which(x==2)
[1] 5 [1] 2
> min(x) > which(x<2)
[1] 0 [1] 1 4
> which.max(x) > sort(x)
[1] 3 [1] 0 1 2 5
> which.min(x) > x^2
[1] 1 [1] 0 4 25 1
Introducción a R
Vectores
Vectores especiales
Se pueden construir vectores con elementos tipo carácter, hay que
introducir los elementos entre comillas
> x<-c("a","b","a","c") [1] "a" "b" "a" "c"
También se pueden crear secuencias de números
> seq(1,10,by=2)
[1] 1 3 5 7 9
y se puede crear un vector como repetición de elementos de otro
vector
> x<-rep(c(0,1,2),c(12,4,7))
> x
[1] 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2
Introducción a R
Vectores
Vectores de tipo categórico
Los vectores de tipo carácter no corresponden con datos de tipo
categórico, para tener datos categóricos hay que usar la función
factor
> x<-rep(c(0,1,2),c(12,4,7))
> factor(x)
[1] 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2
Levels: 0 1 2
> factor(x,levels=c(0,1,2),labels=c("Alto","Medio","Bajo"))
[1] Alto Alto Alto Alto Alto Alto Alto Alto Alto
[15] Medio Medio Bajo Bajo Bajo Bajo Bajo Bajo Bajo
Levels: Alto Medio Bajo
Introducción a R
Vectores
Más sobre vectores
Los vectores también tienen argumentos
> mode(x)
[1] "numeric"
> length(x)
[1] 23
El modo de un vector puede ser cambiado
> z<-as.character(x)
> z
[1] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "1
[20] "2" "2" "2" "2"
> as.numeric(z)
[1] 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2
Introducción a R
Vectores
la función summary
En R, el resultado de actuar una misma función sobre distintos
tipos de objectos produce resultados distintos
> summary(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0000 0.0000 0.0000 0.7826 2.0000 2.0000
> summary(factor(x))
0 1 2
12 4 7
Introducción a R
Vectores
Elementos de un vector
Para acceder a los elementos de un vector se pueden usar los
corchetes
> x<-seq(0.01,1,by=0.01)
> length(x)
[1] 100
> x[12]
[1] 0.12
> x[12]<-0.23
> x[x==0.23]
[1] 0.23 0.23
> x[10:20]
[1] 0.10 0.11 0.23 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.20
> x[10:20]==0.23
[1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
Introducción a R
Matrices, hojas de datos y listas
Matrices
La orden que construye una matriz en R es matrix, una matriz
se caracterı́za porque todos los elementos son del mismo tipo.
Hay que especificar el número de filas y columnas, por defecto
la matriz se construye por columnas.
> mx<-matrix(x,nrow=10)
> mx
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0.01 0.11 0.21 0.31 0.41 0.51 0.61 0.71 0.81 0.91
[2,] 0.02 0.12 0.22 0.32 0.42 0.52 0.62 0.72 0.82 0.92
[3,] 0.03 0.13 0.23 0.33 0.43 0.53 0.63 0.73 0.83 0.93
[4,] 0.04 0.14 0.24 0.34 0.44 0.54 0.64 0.74 0.84 0.94
[5,] 0.05 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95
[6,] 0.06 0.16 0.26 0.36 0.46 0.56 0.66 0.76 0.86 0.96
[7,] 0.07 0.17 0.27 0.37 0.47 0.57 0.67 0.77 0.87 0.97
[8,] 0.08 0.18 0.28 0.38 0.48 0.58 0.68 0.78 0.88 0.98
[9,] 0.09 0.19 0.29 0.39 0.49 0.59 0.69 0.79 0.89 0.99
[10,] 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00
Introducción a R
Matrices, hojas de datos y listas
Sistemas de ecuaciones: rbind, cbind
Construir una matriz que represente a un sistema de ecuaciones
resulta más cómodo mediante el “pegado” de filas:
A<-matrix(rbind(c(1,0,-1),c(2,-2,3),c(2,-4,1)),ncol=3)
b<-c(3,1,2)
solve(A,b)
[1] 2.1428571 0.3571429 -0.8571429
Introducción a R
Matrices, hojas de datos y listas
Hojas de datos
Después de los vectores, el objeto mas común en R es la hoja
de datos (data.frame)
Un data.frame es un conjunto de elementos ordenados por
filas y columnas, donde el número de filas es común y el tipo
de elementos que forman cada una de las columnas es igual
dentro de cada columna, pero puede ser distinto entre
columnas.
Para ver algun ejemplo, vamos a cargar la libreria MASS y ver
los conjuntos de datos incluidos
library(MASS)
data()
Veamos por ejemplo Cars93 o cars
Las columnas de la hoja de datos tienen asignadas etiquetas:
names(cars)
Cada data.frame contiene unos objetos que son cada una de
sus columnas y pueden ser invocados: cars$speed
Introducción a R
Matrices, hojas de datos y listas
Indexado en un data.frame
En una hoja de datos el indexado corresponde a filas y
columnas.
Para seleccionar una serie de filas del data.frame usarı́amos
Cars93[1:10,]
Para seleccionar ahora unas variables Cars93[,c(3,5,8)]
Para eliminar una fila Cars93[-5,]
Para eliminar una columna Cars93[,-5]
Introducción a R
Matrices, hojas de datos y listas
Ordenación de un data.frame
Para ordenar el data.frame por los valores de una variable se
puede usar la función order:
CP93<-Cars93[order(Cars93$Passengers),]
Si se quiere una ordenación por varias variables solo hay que
introducir el nombre de todas las variables en el orden que
queremos que aparezcan los valores
CP93<-Cars93[order(Cars93$Passengers,Cars93$Max.Price),
Introducción a R
Matrices, hojas de datos y listas
Selección en un data.frame
Con la orden subset se pueden hacer selecciones dentro de
una hoja de datos con una condición para una variable
subset(Cars93,Passengers<3)
El sı́mbolo & se usa para imponer varias condiciones del tipo
“y”, mientras que el sı́mbolo | se usa para condiciones del tipo
“o”.
subset(Cars93,Passengers<=4&Origin=="USA")
subset(Cars93,Passengers<=4|Origin=="USA")
A veces es necesario eliminar los datos perdidos
subset(Cars93,(!is.na(Passengers)&Passengers<=4)&Origin!="USA")
Introducción a R
Funciones
Funciones en R
Una de las principales ventajas de R es que el usuario puede definir
sus propias funciones
> f<-function(x){x/100}
> f(1)
[1] 0.01
> y<-seq(0,100,by=5)
> h<-function(x){sum(y[1:x])}
> h(4)
[1] 30
Introducción a R
Funciones
Evaluaciones múltiples de funciones
Cuando se quieren hacer muchas evaluaciones sobre una misma
función se puede utilizar la orden sapply(x,FUN) que calcula las
imágenes de la función FUN sobre los elementos del vector x,
devolviendo un vector o una matriz
> sapply(seq(1,10),h)
[1] 0 5 15 30 50 75 105 140 180 225
Existen órdenes similares con distintos resultados como lappy,
vapply, mapply y replicate
Introducción a R
Gráficos
Gráficos de funciones
La función plot permite dibujar funciones y puntos en el plano
Para dibujar la función f con un
1.5
trazado continuo entre x = −1
y x = 1 basta con usar el código
1.0
f (x)
> plot(f,type="l",-1,1)
0.5
Para consultar parámetros op-
0.0
cionales en un gráfico ver ?plot −1.0 −0.5 0.0 0.5 1.0
x
Introducción a R
Gráficos
Gráficos múltiples
Se puede realizar una división de la ventana gráfica y dibujar la
misma gráfica con distintos parámetros
par(mfrow=c(2,2))
f<-function(x){x^2}
plot(f,type="l",-1,1,lty=2,col=’red’)
plot(f,type="l",-1,1,lty=3)
plot(f,type="p",-1,1)
plot(f,type="p",-1,1,pch=10,col="green")
o adicionar funciones, lineas o texto sobre un gráfico ya existente
plot(f,type="l",-1,1,lty=2,col=’red’)
g<-function(x){x^4}
plot(g,-1,1,add=T)
lines(c(-1,1),c(1.5,1.5),lty=4,col=’green’)
text(0,1,’Grafico conjunto’,col=’blue’)
Introducción a R
Gráficos
Gráficos de puntos
Si lo que se quiere es dibujar pares de puntos bastarı́a con usar la
orden plot(x,y,type=”p”)
plot(cars$speed,cars$dist,type="p", xlab=’Velocidad’,
ylab=’Distancia’,main=’Estudio de distancias de frenado’)
Estudio de distancias de frenado
120
●
100
●
●
● ●
80
●
●
Distancia
●
●
●
●
60
●
● ●
● ●
●
●
●
● ●
●
40
● ●
● ●
● ●
● ● ●
● ●
● ● ● ●
●
●
20
● ●
● ●
●
●
● ●
●
●
0
5 10 15 20 25
Velocidad