107
Introducci´on a R Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla

Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Introduccion a R

Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla

Page 2: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Contenidos

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 3: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 4: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Introduccion

Instalacion

• El proyecto R (Windows, Mac-OS, Linux,. . . )

• Licencia GPL

• R-Studio Un entorno de desarrollo

Descripcion

• Lenguaje para el analisis de dato y la modelizacion.

• Analisis grafico y estadıstico

• Lenguaje de programacion orientado a objetos

• Ampliable a traves de numerosas bibliotecas disponibles

Page 5: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Bibliografıa

• Zuur, Alain; Ieno, Elena N.; Meesters, Erik “A Beginner’sGuide to R” (Springer, 2009)

• Manuales basicos que acompanan a R

• Documentacion en espanol

• Recomendados:

• An Introduction to R• The R Guide

Page 6: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Guiones/Script

• Conjunto de instrucciones que el interprete debe calcularsucesivamente.

• Las expresiones se escriben en ficheros de texto (con extension.R) y se envıan a la consola de R

Page 7: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

R-Studio

Page 8: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Espacio de trabajo

Espacio de trabajo (workspace)

• Conjunto de objetos definidos durante una sesion de trabajocon R que no se han borrado expresamente.

• Fichero con extension .RData• Se carga con la instruccion load

Page 9: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Directorio de trabajo

Directorio de trabajo (Working Directory)Lugar de referencia que utiliza R para localizar los ficheros que leey escribe

• getwd()

• setwd(’directorio’)

Page 10: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Extensiones

Es posible extender R a traves de paquetes/bibliotecas.

• lattice: Biblioteca de graficoslibrary(lattice)

• ade4: Analisis de datos ecologicos

• class: Funciones de clasificacion

• seqinr: Analisis de secuencias

• Existen multiples repositorios• Bioconductor: http://www.bioconductor.org

install.packages("bioconductor",repos="www.bioconductor.org")

Page 11: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Extensiones

Page 12: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Ayuda

> ?mean

> help(mean)

> ??regresion

> help.search(’regression’)

• Description: Breve descripcion.

• Usage: Nombre de los argumentos y sus valores por defecto.

• Arguments: Descripcion detallada de cada argumento.

• Details: Descripcion detallada del comportamiento.

• Value: Descripcion detallada del valor devuelto por la funcion.

• See Also: Otras ayudas relacionadas.

• Examples: Ejemplos de uso.

Page 13: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Ayuda

Page 14: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Primeras nociones

• R distingue entre mayusculas y minusculas

> a <- 3

> A <- 5

> a

[1] 3

> A

[1] 5

• Identificadores validos: Cualquier combinacion de sımbolosalfanumericos junto con el punto y . No puede empezar conun dıgito.

• No renombrar los objetos (pi,. . . ) y/o funciones (c, t,. . . )de R.

Page 15: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Expresiones/Asignaciones

• Hay dos tipos de comandos: expresiones y asignaciones• Expresion. El resultado se muestra por pantalla y no se guarda.

> rnorm(5)

[1] 0.71690438 0.07539554 0.73687196 -0.43048351 -0.31119274

• Asignacion: no se muestra nada y se guarda

> v <- rnorm(4)

> v

[1] 0.46212728 -0.87838057 0.83872171 0.01630945

Page 16: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 17: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Markdown

• Creacion de documentos con formato

• Nacio para construir paginas html a partir de documentos detexto plano (sin formato).

Page 18: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Evolucion

Rapidamente extendido/adaptado/modificado para multiplesaplicaciones

Blogs https://en.support.wordpress.com/

markdown-quick-reference/

Whatsapp

Page 19: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

R Markdown

• Creacion de documentos y presentaciones con codigo R

• Multiples formatos: HTML, MS Word, PDF (hay que tenerTeX instalado)

• http://rmarkdown.rstudio.com/

• install.packages("rmarkdown")

Page 21: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 22: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Vectores

• La estructura de datos mas simple.

• Coleccion ordenada de datos (todos del mismo tipo). Coercion

> x <- c(1, 2.5, c(4.2, 9, 7), FALSE) ; x

[1] 1.0 2.5 4.2 9.0 7.0 0.0

> x[1] <- 9 ; x

[1] 9.0 2.5 4.2 9.0 7.0 0.0

• Operaciones vectorizadas (se aplican a cada elemento)

• El mas corto se recicla (hasta la longitud del mas largo).

> y <- c(x,0,x) ; length(y)

[1] 13

> v <- 2*x + y + 1

Mensajes de aviso perdidos

In 2 * x + y :

longitud de objeto mayor no es multiplo de longitud de menor

> v

[1] 28.0 8.5 13.6 28.0 22.0 1.0 19.0 15.0 11.9 23.2 24.0 8.0 19.0

Page 23: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Vectores

• La estructura de datos mas simple.

• Coleccion ordenada de datos (todos del mismo tipo). Coercion

> x <- c(1, 2.5, c(4.2, 9, 7), FALSE) ; x

[1] 1.0 2.5 4.2 9.0 7.0 0.0

> x[1] <- 9 ; x

[1] 9.0 2.5 4.2 9.0 7.0 0.0

• Operaciones vectorizadas (se aplican a cada elemento)

• El mas corto se recicla (hasta la longitud del mas largo).

> y <- c(x,0,x) ; length(y)

[1] 13

> v <- 2*x + y + 1

Mensajes de aviso perdidos

In 2 * x + y :

longitud de objeto mayor no es multiplo de longitud de menor

> v

[1] 28.0 8.5 13.6 28.0 22.0 1.0 19.0 15.0 11.9 23.2 24.0 8.0 19.0

Page 24: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Generacion de secuencias

• El operador : (tiene la maxima precedencia)

> c(10:15,5:-5)

[1] 10 11 12 13 14 15 5 4 3 2 1 0 -1 -2 -3 -4 -5

• La funcion seq

> seq(1, 15,by=3) ; seq(15,1,length.out=5)

[1] 1 4 7 10 13

[1] 15.0 11.5 8.0 4.5 1.0

• La funcion rep

> rep(c(1,2,3), times=3)

[1] 1 2 3 1 2 3 1 2 3

> rep(c(1,2,3), each=3)

[1] 1 1 1 2 2 2 3 3 3

> rep(c(1,2,3), times=c(3,2,1))

[1] 1 1 1 2 2 3

Page 25: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Operaciones elementales

• +, -, *, /, , %%, %/%, sum, prod, cumsum, cumprod

• sin, cos, tan, asin, acos, atan, abs, sqrt, diff

• log, exp, max, min, pmax, pmin, cummax, cummin

• rev, range, length, sort, order

• summary, mean, median, var, sd, quantile, IQR

• round, ceiling, floor, trunc, signif

> x

[1] 1.0 2.5 4.2 9.0 7.0 0.0

> max(x)

[1] 9

> sort(x)

[1] 0.0 1.0 2.5 4.2 7.0 9.0

> order(x) ; x[order(x)]

[1] 6 1 2 3 5 4

[1] 0.0 1.0 2.5 4.2 7.0 9.0

Page 26: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Inf, NA, NaN

> sqrt(-1)

[1] NaN

> sqrt(-1+0i)

[1] 0+1i

> pi

[1] 3.141593

> 7 / 0

[1] Inf

> (- 6) / 0

[1] -Inf

> 0 / 0

[1] NaN

> Inf - Inf ; 2 * Inf + 5

[1] NaN

[1] Inf

> x ; x[c(3,13,5,15)]

[1] 1.0 2.5 4.2 9.0 7.0 0.0

[1] 4.2 NA 7.0 NA

Page 27: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Operaciones de conjuntos

• union, intersect, setdiff, setequal, is.element,

%in%, match

> conj1 <- unique(c(1,2,3,4,3,2,3,1,4)) ; conj1

[1] 1 2 3 4

> conj2 <- c(3,4,5)

> conj3 <- c(2,4,3,1)

> intersect(conj1,conj2)

[1] 3 4

> setequal(conj1,conj3)

[1] TRUE

> is.element(2,conj1)

[1] TRUE

> c(2,6,4,8) %in% conj1

[1] TRUE FALSE TRUE FALSE

> match(c(2,1),conj3)

[1] 1 4

Page 28: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Cadenas de caracteres

• Delimitadas por ", ’

• \\, \", \n, \t

> paste(c("X","Y"), 1:10, sep="")

[1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"

> strsplit(c("acgtca","acgtaccgtacgact"), split="")

[[1]]

[1] "a" "c" "g" "t" "c" "a"

[[2]]

[1] "a" "c" "g" "t" "a" "c" "c" "g" "t" "a" "c" "g" "a" "c" "t"

> strsplit(c("acgtca","acatgaccgtatgact"), split="atg")

[[1]]

[1] "acgtca"

[[2]]

[1] "ac" "accgt" "act"

Page 29: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Valores logicos

• Comparacion: ==, !=, <, <=, >, >=

• Operadores: &, &&, |, ||, xor, !

> x <- 11:20

> !(x > 15)

[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE

> x < 13 | x >= 17

[1] TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE

> ((-2:2) >= 0) & ((-2:2) <= 0)

[1] FALSE FALSE TRUE FALSE FALSE

> ((-2:2) >= 0) && ((-2:2) <= 0)

[1] FALSE

> ((1:10) < 5) | ((1:10) > 8)

[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE

> ((1:10) < 5) || ((1:10) > 8)

[1] TRUE

Page 30: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Seleccion/Modificacion de datos

• Vector de posiciones

> x

[1] 11 12 13 14 15 16 17 18 19 20

> x[c(1,2,3,2,21)]

[1] 11 12 13 12 NA

> x[11] <- 21 ; x

[1] 11 12 13 14 15 16 17 18 19 20 21

> x[c(1,2,3)] <- 3:1 ; x

[1] 3 2 1 14 15 16 17 18 19 20 21

> x[1:3] <- c(5,6)

Mensajes de aviso perdidos

In x[1:3] <- c(5, 6) :

numero de items para para sustituir no es un multiplo de ...

> x

[1] 5 6 5 14 15 16 17 18 19 20 21

> x <- c(11,12,13,x[4:10]) ; x

[1] 11 12 13 14 15 16 17 18 19 20

Page 31: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Seleccion de datos

• Vector de exclusiones

> x[-c(1,7,5)]

[1] 12 13 14 16 18 19 20

• Vector de valores logicos

> y <- 1:10; x[y > 5]

[1] 16 17 18 19 20

> x[c(TRUE,FALSE,FALSE)]

[1] 11 14 17 20

• Vector de nombres

> names(x) <- letters[1:10] ; x

a b c d e f g h i j

11 12 13 14 15 16 17 18 19 20

> x[c(’b’,’f’,’c’)]

b f c

12 16 13

Page 32: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Algunos ejemplos

> x <- c(2, 3, 5, 7, 11, 13)

> which.max(x)

[1] 6

> which(x > 5)

[1] 4 5 6

> length(x > 5)

[1] 6

> length(which(x > 5))

[1] 3

> sum(x > 5)

[1] 3

> sum(x[x > 5])

[1] 31

> x < 3 | x > 5

[1] TRUE FALSE FALSE TRUE TRUE TRUE

> which(x < 3 | x > 5)

[1] 1 4 5 6

> length(which(x < 3 | x > 5))

[1] 4

> sum(x < 3 | x > 5)

[1] 4

Page 33: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): representacion multidimensionalde los vectores. Todos los elementos de la matriz han de serdel mismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 34: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): representacion multidimensionalde los vectores. Todos los elementos de la matriz han de serdel mismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 35: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): representacion multidimensionalde los vectores. Todos los elementos de la matriz han de serdel mismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 36: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): representacion multidimensionalde los vectores. Todos los elementos de la matriz han de serdel mismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 37: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): representacion multidimensionalde los vectores. Todos los elementos de la matriz han de serdel mismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 38: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Array

• Todos los datos del mismo tipo

• Atributo dim

> x <- 1:42 ; dim(x) <- c(3,7,2) ; x

, , 1

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 1 4 7 10 13 16 19

[2,] 2 5 8 11 14 17 20

[3,] 3 6 9 12 15 18 21

, , 2

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 22 25 28 31 34 37 40

[2,] 23 26 29 32 35 38 41

[3,] 24 27 30 33 36 39 42

> x[15]

15

Page 39: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Array y seleccion de datos

> x[c(FALSE,TRUE,FALSE),-c(1,7),2]

[1] 26 29 32 35 38

> x[-2,,1]

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 1 4 7 10 13 16 19

[2,] 3 6 9 12 15 18 21

> x <- array(1:5,dim=c(3,7,2))

> x[1:2,2:5,2] <- 99 ; x

, , 1

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 1 4 2 5 3 1 4

[2,] 2 5 3 1 4 2 5

[3,] 3 1 4 2 5 3 1

, , 2

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 2 99 99 99 99 2 5

[2,] 3 99 99 99 99 3 1

[3,] 4 2 5 3 1 4 2

Page 40: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Matrices (un caso particular)

> a <- matrix(1:20,5,4) ; a

[,1] [,2] [,3] [,4]

[1,] 1 6 11 16

[2,] 2 7 12 17

[3,] 3 8 13 18

[4,] 4 9 14 19

[5,] 5 10 15 20

> ncol(a)

[1] 4

> b <- matrix(21:32, nrow=3, byrow=T)

> rownames(b) <- letters[1:3]; colnames(b) <- LETTERS[1:4]; b

A B C D

a 21 22 23 24

b 25 26 27 28

c 29 30 31 32

> b["a","A"]

[1] 21

> b["a",]

A B C D

21 22 23 24

Page 41: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

rbind y cbind

> a %*% t(b)

a b c

[1,] 790 926 1062

[2,] 880 1032 1184

[3,] 970 1138 1306

[4,] 1060 1244 1428

[5,] 1150 1350 1550

> cbind(rbind(a,b),1:8)

A B C D

1 6 11 16 1

2 7 12 17 2

3 8 13 18 3

4 9 14 19 4

5 10 15 20 5

a 21 22 23 24 6

b 25 26 27 28 7

c 29 30 31 32 8

Page 42: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Algunas funciones

• t, det, diag

• solve(A, B) resuelve A ∗ X = B, solve(A) devuelve A−1

> apply(b, 1, sum)

a b c

90 106 122

> apply(b, 2, mean)

A B C D

25 26 27 28

> rowSums(b)

a b c

90 106 122

> colMeans(b)

A B C D

25 26 27 28

> solve(matrix(c(3,1,2,-1),nrow=2),c(5,0))

[1] 1 1

Page 43: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 44: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Factores

R maneja las variables cualitativas usando factores.

> fr <- factor(c("Sı", "No", "No", "Sı")); fr

[1] Sı No No Sı

Levels: No Sı

> table(fr)

No Sı

2 2

> fr <- factor(c("Sı", "No", "No", "Sı"), levels = c("No", "Sı", "O"),

labels = c("No fumador", "Fumador", "NS/NC")); fr

[1] Fumador No fumador No fumador Fumador

Levels: No fumador Fumador NS/NC

> table(fr)

No fumador Fumador NS/NC

2 2 0

> nlevels(fr)

[1] 3

> levels(fr)

[1] "No fumador" "Fumador" "NS/NC"

Page 45: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Factores ordenados

> fc <- factor(c("Muchos", "Pocos", "Pocos", "Bastantes"),

levels = c("Pocos", "Bastantes", "Muchos"),

ordered = TRUE) ; fc

[1] Muchos Pocos Pocos Bastantes

Levels: Pocos < Bastantes < Muchos

> sum(fc < "Muchos")

[1] 3

> ordered(c("Muchos", "Pocos", "Pocos", "Bastantes"),

levels = c("Pocos", "Bastantes", "Muchos"))

[1] Muchos Pocos Pocos Bastantes

Levels: Pocos < Bastantes < Muchos

> table(fr,fc)

fc

fr Pocos Bastantes Muchos

No fumador 2 0 0

Fumador 0 1 1

NS/NC 0 0 0

Page 46: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Factores

• La funcion tapply permite aplicar una operacion a un vectoragrupando previamente los datos en cada uno de los nivelesproporcionados por un factor.

• Reordenar los niveles de un factor: reorder (el factor cuyosniveles hay que reordenar; un vector de la misma longitud acuyos subconjuntos de valores correspondientes a cada niveldel factor se aplicara la funcion que determina el orden; esafuncion).

• Una variable cuantitativa se puede transformar en una variablecualitativa.

Page 47: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

tapply, reorder

> head(Cebada)

Cosecha Variedad A~no Lugar

1 27.00000 Manchuria 1931 University Farm

2 48.86667 Manchuria 1931 Waseca

3 27.43334 Manchuria 1931 Morris

4 39.93333 Manchuria 1931 Crookston

5 32.96667 Manchuria 1931 Grand Rapids

6 28.96667 Manchuria 1931 Duluth

> head(Cebada$Variedad)

[1] Manchuria Manchuria Manchuria Manchuria Manchuria Manchuria

10 Levels: Glabron Manchuria No.457 No.462 No.475 ... Wisconsin No.38

> tapply(Cebada$Cosecha, Cebada$Variedad, median)

Glabron Manchuria No.457 No.462 ...

32.40000 30.96667 33.96666 30.45000 ...

> Variedad_re <- reorder(Cebada$Variedad, Cebada$Cosecha, median)

> head(Variedad_re)

Manchuria Manchuria Manchuria Manchuria Manchuria Manchuria

10 Levels: Svansota No.462 Manchuria No.475 Velvet ... Trebi

> tapply(Cebada$Cosecha, Variedad_re, median)

Svansota No.462 Manchuria No.475

28.55000 30.45000 30.96667 31.06667

Page 48: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Factores para variables cuantitativas

> num <- c(10, 0, 4, 8, 5, 22)

> interv <- cut(num, breaks = 4); interv

[1] (5.49,11] (-0.022,5.49] (-0.022,5.49]

[4] (5.49,11] (-0.022,5.49] (16.5,22]

Levels: (-0.022,5.49] (5.49,11] (11,16.5] (16.5,22]

> interv <- cut(num, breaks = c(0, 5, 10, 30), right=F); interv

[1] [10,30) [0,5) [0,5) [5,10) [5,10) [10,30)

Levels: [0,5) [5,10) [10,30)

> interv <- cut(num, breaks = c(0, 5, 10, 30), order=T,

labels = c("Poco","Bastante","Mucho"),

include.lowest = TRUE) ; interv

[1] Bastante Poco Poco Bastante Poco Mucho

Levels: Poco < Bastante < Mucho

> table(interv)

Poco Bastante Mucho

3 2 1

> which("Poco" < interv )

[1] 1 4 6

Page 49: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 50: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Listas

> lst <- list(nombre="Carlos", num.hijos=3, edad.hijos=c(4,7,9))

> lst$apellido <- "Garcıa"; lst

$nombre

[1] "Carlos"

$num.hijos

[1] 3

$edad.hijos

[1] 4 7 9

$apellido

[1] "Garcıa"

> length(lst)

[1] 4

> lst[1]

$nombre

[1] "Carlos"

> lst[[3]][2]

[1] 7

> lst$num.hijos

[1] 3

> lst["nombre"]

$nombre

[1] "Carlos"

Page 51: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Marcos de datos

> df <- data.frame(Nombre=c("Pedro","Marıa","Jose","Marta"),

Edad=c(27,34,40,39),

Poblacion=c("Malaga","Madrid","Leon","Barcelona"),

Sexo=c("H","M","H","M"),

Casado=c(F,T,T,F)); df

Nombre Edad Poblacion Sexo Casado

1 Pedro 27 Malaga H FALSE

2 Marıa 34 Madrid M TRUE

3 Jose 40 Leon H TRUE

4 Marta 39 Barcelona M FALSE

> attach(df)

> Nombre

[1] Pedro Marıa Jose Marta

Levels: Jose Marıa Marta Pedro

> Edad

[1] 27 34 40 39

> detach(df)

> Edad

Error: objeto ’Edad’ no encontrado

Page 52: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Marcos de datos

> names(df)

[1] "Nombre" "Edad" "Poblacion" "Sexo" "Casado"

> rownames(df)

[1] "1" "2" "3" "4"

> ncol(df)

[1] 5

> df$Nombre

[1] Pedro Marıa Jose Marta

Levels: Jose Marıa Marta Pedro

> df[1:3]

Nombre Edad Poblacion

1 Pedro 27 Malaga

2 Marıa 34 Madrid

3 Jose 40 Leon

4 Marta 39 Barcelona

> df[1,3]

[1] Malaga

Levels: Barcelona Leon Madrid Malaga

Page 53: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Operaciones simultaneas

• Las funciones lapply y sapply aplica una operacion a cadaelemento de una lista.

• La funcion aggregate permite aplicar una operacion a cadacolumna de un marco de datos agrupando previamente losdatos en cada uno de los niveles proporcionados por una listade factores.

Page 54: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Operaciones simultaneas

> df <- data.frame(altura=c(150,135,210,140), peso=c(65,61,100,65),

sexo=c("H", "M", "H", "M"))

> apply(df[-3], 2, sd)

altura peso

34.73111 18.26426

> lapply(df[-3], sum)

$altura

[1] 635

$peso

[1] 291

> sapply(df[-3], sum)

altura peso

635 291

> aggregate(df[-3], list(df$sexo), mean)

Group.1 altura peso

1 H 180.0 82.5

2 M 137.5 63.0

Page 55: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Marcos de datos: read.table

• Todas las filas tienen el mismo numero de elementos menos laprimera que tiene un elemento menos.

• La primera fila contiene los nombres de las columnas.

• El primer elemento del resto de filas es el nombre de cada fila

• Los datos estan separados por espacios en blanco.

• El separador de los decimales es un punto.

• Los valores desconocidos se expresan con NA.

• write.table

• read.csv,. . . (ver la ayuda)

Page 56: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 57: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Objetivos

Comunicar de ideas complejas con claridad, precision y eficiencia.

• Mostrar los datos.

• Inducir a pensar sobre el contenido en lugar de lametodologıa, el diseno grafico o la tecnologıa que lo produjo

• Evitar la distorsion en la comunicacion de los datos.

• Presentar muchos numeros en un pequeno espacio.

• Hacer que grandes conjuntos de datos tengan coherencia.

• Inducir a la comparacion entre diferentes partes de los datos.

• Revelar detalles, desde un perspectiva global o particular.

• Tener un proposito razonablemente claro: la descripcion, laexploracion, la tabulacion o la decoracion.

• Estar integrado con las descripciones estadısticas y verbales,

Page 58: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Recomendaciones

• Hacer que los datos sobresalgan. Evitar lo superfluo.

• Utilizar elementos prominentes para mostrar los datos.

• Hacer la region de datos menor que la region delimitada porlas escalas. Las marcas hacia afuera.

• No congestionar la region de datos.

• No exagerar el numero de marcas (de 3 a 10 marcas).

• Utilizar una lınea cuando haya un valor que deba verse atraves del grafico, pero que no interfiera con los datos.

• Las etiquetas no deben interferir o congestionar el grafico.

• Evitar colocar claves en el interior. Colocar las notas en eltexto o la explicacion.

• Los sımbolos o conjuntos de datos que se superpongan debenpoder ser reconocidos facilmente.

Page 59: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Dispositivos graficos

R puede generar graficos en casi cualquier tipo de dispositivografico o de impresion.

• la ventana de RStudio (por defecto);

• postscript, pdf y bmp, para generar ficheros PostScript, PDFy Mapa de Puntos (BMP)

• png y jpeg, para generar imagenes PNG y JPEG.

hist(rnorm(1000))

png(file="histograma.png")

hist(rnorm(1000))

dev.off()

X11()

hist(rnorm(1000))

savePlot(file="histograma.png", type="png")

dev.off()

Page 60: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Biblioteca lattice

> g1 <- densityplot(~ gcsescore | factor(score), data = Chem97,

plot.points = FALSE, ref = TRUE)

> g2 <- densityplot(~ gcsescore, data = Chem97, groups = score,

plot.points = FALSE, ref = TRUE,

auto.key = list(columns = 3))

> print(g1, split=c(1,1,2,1),more=T)

> print(g2, split=c(2,1,2,1))

Page 61: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Parametros comunes

En la mayorıa de las funciones graficas

• data: Marco de datos con las variables a partir de las cualesse construye el grafico

• horizontal: Determina el sentido del grafico

• main: Tıtulo principal

• sub: Subtıtulo

• xlab, ylab: Etiquetas de los ejes X e Y

• xlim, ylim: Lımites de los ejes X e Y

Page 62: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 63: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Diagrama de dispersion

Muestra los valores dibujando un punto por cada dato.

> head(faithful$eruptions)

[1] 3.600 1.800 3.333 2.283 4.533 2.883

> stripplot(~eruptions, data = faithful,

main = "Erupciones del geiser Old Faithful",

xlab = "Duracion (en minutos)")

Page 64: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Diagrama de caja y bigote

Un rectangulo entre el primer y el tercer cuartil, en su interior lamediana. A ambos lados dos lıneas con los valores que seencuentran a lo sumo a una distancia de 1.5 veces el rangointercuartılico. Cualquier otro valor se marca individualmente.

> bwplot(~Sepal.Width, data = iris, main = "Ancho de los Sepalos",

xlab = "")

Page 65: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Varios diagramas de caja y bigote

Para comparar las distribuciones para distintas agrupaciones en losdatos podemos realizar un diagrama por cada uno.

> bwplot(Sepal.Width~Species, data = iris,

main = "Ancho de los Sepalos", xlab = "")

Page 66: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Histograma

Se divide el rango de datos en clases, se calcula la frecuencia dedatos para cada clase y se dibuja una barra por clase (ancho laamplitud de la clase y superficie proporcional a la frecuencia)

> histogram(~eruptions, data = faithful, type = "count",

main = "Erupciones del geiser Old Faithful",

xlab = "Duracion (en minutos)",

ylab = "No de erupciones")

Page 67: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Histograma (Cont.)

Fijar el numero de clases (por defecto usa la regla de Sturges,log2(n) + 1), sus extremos y/o utilizar las frecuencias relativas.

> print(histogram(faithful$eruptions, type = "percent", nint = 20),

split = c(1,1,2,1), more=T)

> print(histogram(faithful$eruptions, type = "density",

breaks = c(0, 2, 3, 3.5, 4, 4.5, 5, 5.5)),

split = c(2,1,2,1))

Page 68: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Grafico de densidad

> densityplot(faithful$eruptions, plot.points = "jitter",

main = "Erupciones del geiser Old Faithful",

xlab = "Duracion (en minutos)", ylab = "Probabilidad")

Opciones de plot.points: valor logico, ”rug” o ”jitter”

Page 69: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Superposicion

> densityplot(~height, data = singer, groups = voice.part,

bw = 1.5, auto.key = list(columns = 4))

Page 70: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Diagrama de barras

Una barra por cada dato, la longitud de cada barra es proporcionalal valor del dato. Para conjuntos de datos pequenos.

> barchart(sort(tapply(drosophila$fecundidad, drosophila$linea, mean)),

xlab="", main="Fecundidad media de cada lınea genica")

Page 71: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Diag. de barras (variables cualitativas)

Frecuencias absolutas de los distintas categorıas de esa variable.

> barchart(table(iris$Species), horizontal=FALSE,

main = "Numero de plantas estudiadas segun la especie",

xlab = "Especie de lirio")

Page 72: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Superposicion

Por cada grupo de valores, un grupo de barras

> barchart(Departamento ~ Solicitudes, groups = Resultado,

data = UCBAdmisiones, auto.key=T)

Page 73: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Diagrama de puntos

Un punto por cada dato en una coordenada vertical distinta.

> dotplot(sort(islands[islands < islands["Java"]]),

xlab="Superficie en millas cuadradas")

Page 74: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 75: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Diagrama de dispersion bivariante

Dibuja un punto por cada par de valores.ejeY ~ ejeX

> A~no <- 1700:1988

> xyplot(sunspot.year ~ A~no)

> xyplot(sunspot.year ~ A~no, type = "b")

> xyplot(sunspot.year ~ A~no, type = "s")

Page 76: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Matriz de diagramas de dispersion

> splom(environmental)

Page 77: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Tecnicas de visualizacion (I)

Anadir una ligera perturbacion a los datos: jitter

> xyplot(Sepal.Length ~ Petal.Length, data = iris)

> xyplot(jitter(Sepal.Length) ~ jitter(Petal.Length), data = iris)

Page 78: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Tecnicas de visualizacion (II)

Razon de aspecto: Relacion entre la altura y la anchura

> f <- function (x) {if (x < 0) x^2 else 10*x}

> ex <- -10:10 ; ey <- sapply(ex, f)

> xyplot(ey ~ ex, type = "l", aspect = 1, xlab = "x", ylab = "f(x)")

> xyplot(ey ~ ex, type = "l", aspect = 1/10, xlab = "x", ylab = "f(x)")

> xyplot(ey ~ ex, type = "l", aspect = 10, xlab = "x", ylab = "f(x)")

Page 79: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Regresion lineal simple

Anadir la recta de regresion

> lm(ozone ~ wind, data = environmental)

Coefficients:

(Intercept) wind

99.054 -5.731

> xyplot(ozone ~ wind, data = environmental, type = c("p", "r"),

aspect = "xy")

Page 80: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Ajuste de una curva

Ajuste de loess:

• alfa (span): si aumenta la curva se hace mas suave

• lambda (degree): grado de ciertos polinomios (1 o 2)

xyplot(ozone ~ wind, data = environmental, type = c("p", "smooth"),

aspect = "xy", span = 0.6, degree = 2)

Page 81: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Distribucion en paneles (trellis)

En cada panel se dibuja el grafico correspondiente a unsubconjunto de datos que se obtienen a partir de variablescondicionantes:

• ~ x | g1 * g2 * ...: histograma, grafico de densidad,matriz de dispersion

• y ~ x | g1 * g2 * ...: diagramas de caja y bigote,barras, puntos y dispersion

Page 82: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

> dotplot(variety ~ yield | year * site, data = barley,

xlab="", layout = c(6,2))

Page 83: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Condicionante cuantitativa

> E.shingle <- equal.count(ethanol$E, number = 9, overlap = 1/4)

> xyplot(NOx ~ C | E.shingle, data = ethanol, aspect = "xy",

xlab = "Razon de compresion",

ylab = "Oxidos de nitrogeno (microgramos/J)")

Page 84: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Superposicion de paneles

> xyplot(Sepal.Length+Sepal.Width ~ Petal.Length+Petal.Width | Species,

data = iris, auto.key = list(column = 2),

xlab = "Longitud y anchura del petalo",

ylab = "Longitud y anchura del sepalo")

Page 85: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 86: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Formato del punto y datos extra

> xyplot(1:10 ~ 1:10)

> xyplot(1:10 ~ 1:10, pch=3, col="red")

> xyplot(1:10 ~ 1:10,

panel = function (x, y) {

panel.xyplot(x, y, pch=3, col="red")

panel.points(c(2,2), c(4,5), pch=5, col="blue")})

Page 87: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Formato del punto y datos extra

> xyplot(1:10 ~ 1:10)

> xyplot(1:10 ~ 1:10, pch=3, col="red")

> xyplot(1:10 ~ 1:10,

panel = function (x, y) {

panel.xyplot(x, y, pch=3, col="red")

panel.points(c(2,2), c(4,5), pch=5, col="blue")})

Page 88: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Formato del punto y datos extra

> xyplot(1:10 ~ 1:10)

> xyplot(1:10 ~ 1:10, pch=3, col="red")

> xyplot(1:10 ~ 1:10,

panel = function (x, y) {

panel.xyplot(x, y, pch=3, col="red")

panel.points(c(2,2), c(4,5), pch=5, col="blue")})

Page 89: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Leyenda

attach(iris)

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, auto.key = TRUE)

xyplot(Sepal.Width ~ Sepal.Length, groups = Species,

auto.key = list(corner=c(1,0.95), lines=T, points=F,

text=c("Setosa","Versicolor","Virginica")))

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, pch=4:6, col=2:4,

key = list(corner=c(1,0.95), lines=list(col=2:4, lty=1:3),

text=list(c("Setosa","Versicolor","Virginica"), font=3)))

Page 90: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Leyenda

attach(iris)

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, auto.key = TRUE)

xyplot(Sepal.Width ~ Sepal.Length, groups = Species,

auto.key = list(corner=c(1,0.95), lines=T, points=F,

text=c("Setosa","Versicolor","Virginica")))

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, pch=4:6, col=2:4,

key = list(corner=c(1,0.95), lines=list(col=2:4, lty=1:3),

text=list(c("Setosa","Versicolor","Virginica"), font=3)))

Page 91: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Leyenda

attach(iris)

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, auto.key = TRUE)

xyplot(Sepal.Width ~ Sepal.Length, groups = Species,

auto.key = list(corner=c(1,0.95), lines=T, points=F,

text=c("Setosa","Versicolor","Virginica")))

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, pch=4:6, col=2:4,

key = list(corner=c(1,0.95), lines=list(col=2:4, lty=1:3),

text=list(c("Setosa","Versicolor","Virginica"), font=3)))

Page 92: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Superponer distintos graficos

> a <- rnorm(1000)

> histogram(~ a, type = "density",

panel = function(x, ...) {

panel.histogram(x, ..., col="blue", border="white")

panel.densityplot(x,..., col = "orange", lwd=3)})

> histogram(~ a, type = "density",

panel = function(x, ...) {

panel.histogram(x, breaks=25, col="blue", border="white")

panel.densityplot(x,..., col = "orange", lwd = 3)})

Page 93: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Escala logarıtmica y curva suavizada

xyplot(dist ~ speed, data = cars, type=c("p","smooth"), span=1,

main = "Conjunto de datos: cars",

xlab = "Velocidad (mph)", ylab = "Distancia de franado (ft)")

xyplot(log10(dist) ~ log10(speed), data = cars,

type=c("p","smooth"), span=1,

main = "Conjunto de datos: cars (escala logartıtmica)",

xlab = "Velocidad (mph)", ylab = "Distancia de franado (ft)")

Page 94: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Escala logarıtmica y curva suavizada

xyplot(dist ~ speed, data = cars, type=c("p","smooth"), span=1,

main = "Conjunto de datos: cars",

xlab = "Velocidad (mph)", ylab = "Distancia de franado (ft)")

xyplot(log10(dist) ~ log10(speed), data = cars,

type=c("p","smooth"), span=1,

main = "Conjunto de datos: cars (escala logartıtmica)",

xlab = "Velocidad (mph)", ylab = "Distancia de franado (ft)")

Page 95: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Escala logarıtmica y curva suavizada

xyplot(dist ~ speed, data = cars,

main = "Conjunto de datos: cars (escala logarıtmica)",

xlab = "Velocidad (mph)", ylab = "Distancia de franado (ft)",

scales = list(x=list(equispaced.log = FALSE,log=TRUE),

y=list(equispaced.log = FALSE,log=TRUE),

col="green"),

panel = function(x, y) {panel.xyplot(x, y)

panel.loess(x, y, span=1, col="red")})

Page 96: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otras opciones (I)

Para cualquiera de los tıtulos

> xyplot(ozone^0.5 ~ wind, data = environmental,

ylab = expression(sqrt("Concentracion de ozono")),

xlab = list(label = "Velocidad del viento",

cex = 2, col = "red", font = 3))

Page 97: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otras opciones (II)

Elegir parte de un factor

> bwplot(Species ~ Sepal.Length, data = iris,

subset = Species != "setosa")

Page 98: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otras opciones (III)

Recorrido y seleccion de paneles

> histogram(~ height | voice.part, data = singer, layout = c(3, 3))

> histogram(~ height | voice.part, data = singer, layout = c(3, 3),

as.table=T, skip = c(rep(FALSE, 4), TRUE, rep(FALSE, 4)))

Page 99: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Otros elementos...

> rojos <- runif(10,1,10) ; verdes <- runif(10,1,10)

> lineas <- runif(10, 1, 10) ; textos <- runif(10,1,10)

> poligono <- runif(8,1,10)

> xyplot(1:10 ~ 1:10, xlab = "", ylab = "", col="black",

scales = list(x = list(labels=c("uno", "tres", "cinco",

"siete", "nueve"),

at = seq(1,10,by=2)),

y = list(labels=1:10, at=1:10)),

main = "Grafico inventado",

key = list(text = list(c("uno", "dos", "tres")),

x=0.8, y=0.3, lines=list(col=rainbow(3), lty=1:3)),

panel = function (x, y, ...) {

panel.xyplot(x, y, ...)

panel.points(rojos[1:5], rojos[6:10], cex=1.5, col="red")

panel.points(verdes[1:5], verdes[6:10], cex=1.7, col="green",

pch="+")

panel.lines(1:10, lineas, lty=2, lwd=2, col="black")

panel.text(textos[1:5], textos[6:10], cex=1.7, col=rainbow(5),

labels = c("uno", "dos", "tres", "cuatro", "cinco"))

panel.abline(h=5, lty=4)

panel.polygon(poligono[1:4], poligono[5:8], col="blue")})

Page 100: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros
Page 101: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

1 Introduccion

2 R Markdown

3 Vectores

4 Factores

5 Listas y marcos de datos

6 Graficos en RGraficos univariantesGraficos multivariantesAnadir otros elementos

7 Programacion en R

Page 102: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Agrupacion de expresiones

• Las expresiones pueden ser agrupadas entre llaves:

• En una misma lınea han de separarse por ;

{

a <- 0; b <- 1

c <- a+b

}

• El valor que devuelve el grupo es el valor de la ultimaexpresion

Page 103: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Condicional: ifif (condicion) consecuencia [else alternativa]

• condicion tiene que devolver un unico valor logico• Si consecuencia y/o alternativa son un grupo de expresiones

han de ir entre llaves• Si condicion devuelve el valor TRUE se obtiene el valor de

consecuencia• en caso contrario, se obtiene el valor de alternativa

> c <- 0:10 < 9 & 3 < 0:10

> c

[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE

> a <- 10:20

> b <- 40:50

> if (TRUE) a + b else a * b

[1] 50 52 54 56 58 60 62 64 66 68 70

> if (c) a + b else a * b

[1] 400 451 504 559 616 675 736 799 864 931 1000

Warning message:

In if (c) a + b else a * b :

la condicion tiene longitud > 1 y solo el primer elemento sera usado

>

Page 104: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Condicional: ifelse

ifelse(condicion,a,b)

• Devuelve un vector de la misma longitud que condicion, conlos elementos a[i] si condicion[i] tiene el valor TRUE, y b[i] encaso contrario.

> c <- 0:10 < 9 & 3 < 0:10

> c

[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE

> a <- 10:20

> b <- 40:50

> ifelse(c, a, b)

[1] 40 41 42 43 14 15 16 17 18 49 50

Page 105: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

for, while, repeat

for (var in vector) expr

• expr se calcula tantas veces como elementos tenga vector

• la variable var toma como valor, en cada ocasion, cada unode los elementos de vector

while (condicion) expr

• se calcula expr mientras condicion tenga el valor TRUE

repeat expr

• se calcula expr mientras no se interrumpa explıcitamente conla instruccion break.

Page 106: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Ejemplos> a <- 1:5000; b <- 11:5010

> system.time(res <- a+b)

user system elapsed

0 0 0

> system.time({resFor <- c() ;

for (i in 1:5000) resFor[i] <- a[i]+b[i]})

user system elapsed

0.026 0.000 0.025

> system.time({resWhile <- c() ; i<-1 ;

while (i <= 5000) {resWhile[i] <- a[i]+b[i] ; i<- i+1}})

user system elapsed

0.028 0.000 0.027

> system.time({resRepeat <- c() ; i<-1 ;

repeat {if (i<=5000) {resRepeat[i] <- a[i]+b[i] ; i<- i+1}

else break}})

user system elapsed

0.028 0.000 0.028

> identical(res,resFor)

[1] TRUE

> identical(resFor,resWhile)

[1] TRUE

> identical(resWhile,resRepeat)

[1] TRUE

Page 107: Introducción a R - Universidad de Sevilla · 2 R Markdown 3 Vectores 4 Factores 5 Listas y marcos de datos 6 Gr a cos en R Gr a cos univariantes Gr a cos multivariantes Anadir~ otros

Definicion de funciones

nombre <- function(var1,...,varn) expr

• expr es una agrupacion de expresiones que utilizan var1,. . . varn

nombre(arg1,..., argn)

• valor de expr tras sustituir cada vari por el valor de argi

> ecGrado2 <- function(a, b, c)

{ disc <- (b^2)-(4*a*c)

sol1 <- (-b + sqrt(disc))/(2*a)

sol2 <- (-b - sqrt(disc))/(2*a)

c(sol1,sol2)

}

> ecGrado2(2,4,1)

[1] -0.2928932 -1.7071068

> "%porcentaje%" <- function(a,b) (a/(a+b))*100

> 4 %porcentaje% 6

[1] 40

>