Sei sulla pagina 1di 20

Introducción a R

Un lenguaje orientado a objetos

César Asensio, Luis M. Esteban y Antonio R. Laliena

30 de enero de 2014

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 1 / 20


Índice

Introducción

Vectores

Matrices, hojas de datos y listas

Funciones

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 2 / 20


R programming language

I R es una implementación del lenguaje S desarrollado por Bell


Laboratories por Rick Becker, John Chambers y Allan Wilks
I R fue creado por Robert Gentleman y Ross Ihaka (Departamento
de estadı́stica de la Universidad de Auckland)
I Actualmente es desarrollado por el R Development Core Team, del
cual forma parte el propio Chambers
I 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
I La documentación en castellano sobre R es gratuita y puede
bajarse de http://cran.r-project.org/other-docs.html

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 3 / 20


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

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 4 / 20


Índice

Introducción

Vectores

Matrices, hojas de datos y listas

Funciones

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 5 / 20


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

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 6 / 20


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
o seleccionar aleatoriamente elementos de un vector con o sin
reemplazamiento
> sample(c(0,1,2,3),4,replace=T)
[1] 1 0 0 3
Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 7 / 20
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

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 8 / 20


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 FA

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 9 / 20


Índice

Introducción

Vectores

Matrices, hojas de datos y listas

Funciones

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 10 / 20


Matrices
I La orden que construye una matriz en R es matrix, una matriz se
caracterı́za porque todos los elementos son del mismo tipo.
I 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,]
Asensio, Esteban &0.10 0.20 0.30
Laliena (E.U.P.L.A.) () 0.40Introducción
0.50 a0.60 R 0.70 0.80
30 de0.90 1.0011 / 20
enero de 2014
Operaciones con matrices

En primer lugar generamos aleatoriamente dos matrices 3x3

> set.seed(10)
> A<-matrix(sample(seq(-10,10),replace=T,9),nrow=3)
> set.seed(7)
> B<-matrix(sample(seq(-10,10),replace=T,9),nrow=3)

El producto de matrices se construye como A %* %B


La inversa de una matriz como solve(A)
La transpuesta como t(A)
Los valores y vectores propios como eigen(A)

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 12 / 20


Hojas de datos
I Después de los vectores, el objeto mas común en R es la hoja de
datos (data.frame)
I 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.
I Para ver algun ejemplo, vamos a cargar la libreria MASS y ver los
conjuntos de datos incluidos
library(MASS)
data()
I Veamos por ejemplo Cars93 o cars
I Las columnas de la hoja de datos tienen asignadas etiquetas:
names(cars)
I Cada data.frame contiene unos objetos que son cada una de sus
columnas y pueden ser invocados: cars$speed
Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 13 / 20
Listas

Por último, uno de los objetos mas genéricos que esta definido en R es
una lista.
La lista es un vector, que incluye cualquier tipo de objetos como cada
uno de sus elementos.

> lista1<-list(cars,seq(1,100))

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 14 / 20


Índice

Introducción

Vectores

Matrices, hojas de datos y listas

Funciones

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 15 / 20


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)
> y
[1] 0 5 10 15 20 25 30 35 40 45 50 55 60 65
[20] 95 100
> g<-function(x){y[x]/100}
> g(3)
[1] 0.1
> h<-function(x){sum(y[1:x])}
> h(4)
[1] 30

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 16 / 20


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

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 17 / 20


Integración de funciones

Una operación básica sobre funciones en estadı́stica es el cálculo de


integrales, en R basta con usar la función integrate

> f<-function(x){3/2*x^2}
> f
function(x){3/2*x^2}
> integrate(f,-1,1)
1 with absolute error < 1.1e-14
> integrate(f,0,1)
0.5 with absolute error < 5.6e-15

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 18 / 20


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

Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 19 / 20


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
Asensio, Esteban & Laliena (E.U.P.L.A.) () Introducción a R 30 de enero de 2014 20 / 20

Potrebbero piacerti anche