conceptos básicos de r

76
Conceptos B´asicosde R Linkedin: Alvaro Miguel Naupay Gusukuma kz [email protected] blog: http://mat-alvaro.blogspot.com/ August 15, 2013

Upload: alvaro-miguel-naupay-gusukuma

Post on 07-Jul-2015

309 views

Category:

Documents


1 download

DESCRIPTION

Se muestra loa conceptos básicos de R

TRANSCRIPT

Page 1: Conceptos básicos de R

Conceptos Basicos de

R

Linkedin: Alvaro Miguel Naupay Gusukumak z [email protected]

blog: http://mat-alvaro.blogspot.com/

August 15, 2013

Page 2: Conceptos básicos de R

El lenguaje R

• Fue inspirado en S, creado en Laboratorios Bell por JohnChambers y sus colaboradores Rick Becker, Allan Wilksy Duncan Temple Lang entre los anos 1975 y 1998.

• R es un lenguaje de computacion (y asociado a unentorno computacional) para llevar acabo calculosestadısticos.

• Parece muy similar a S, pero la similitud fuereestructurada encima de piezas de software muydiferentes.

• R fue creado por Robert Gentleman y Ross Ihaka enla Universidad de Aukland como banco de prueba paraprobar algunas ideas estadısticas.

• Ahora se ha convertido en una herramienta con todas lasfunciones para llevar a cabo calculos estadısticos y otrascosas mas.

Page 3: Conceptos básicos de R

El proyecto R (The R project)

• El Proyecto R es una colaboracion internacional deinvestigadores de estadıstica computacional.

• Hay aproximadamente 20 miembros en el equipoprincipal de R, que mantienen y mejoran a R.

• Las ediciones del entorno R son hechos a traves delCRAN (comprehensive R archive network = amplia redde archivos R) dos veces por ano.(http://www.r-project.org/)

• El software se distribuye bajo una licencia de “softwarelibre”, lo que hace posible que cualquier persona lodescargue y utilice.

• Hay mas de 3500 extensiones de paquetes que han sidocontribuidos al CRAN.

Page 4: Conceptos básicos de R

Conceptos basicos de R

• R es un lenguaje de computadora que es procesado porun programa especial llamado interpretre. Este programalee y evalua la expresiones del lenguaje R, e imprime losvalores determinados por las expresiones.

• El interprete indica que esta a la espera de una entradapara imprimir su prompt (“ > ”) en la siguiente lınea conun resultado.

• RStudio, es una interfase para R, permite ver lospaquetes instalados y los script.(http://www.rstudio.com/).

• R se puede instalar en Linux, Windows y (Mac)OS X.

Page 5: Conceptos básicos de R

Comandos importantes

getwd()

setwd("direccion.extension")

Page 6: Conceptos básicos de R

Usando R como calculadora

• Los usuarios escriben expresiones al interprete de R.

• R responde mediante el calculo e impresion de lasrespuestas.> 23+99

[1] 122

> 3/7

[1] 0.4285714

> 12^ 3

[1] 1728

Page 7: Conceptos básicos de R

Agrupar y Evaluar

• Se aplican las reglas aritmeticas normales, multiplicaciony division se ejecuta antes que la adicion y la resta.> 4+3*5

[1] 19

• Las normas de evaluacion por defecto pueden serinvalidados por el uso de parentesis.> (4+3)*5

[1] 35

Page 8: Conceptos básicos de R

Agrupar y Evaluar

• Se aplican las reglas aritmeticas normales, multiplicaciony division se ejecuta antes que la adicion y la resta.> 4+3*5

[1] 19

• Las normas de evaluacion por defecto pueden serinvalidados por el uso de parentesis.> (4+3)*5

[1] 35

Operador sucesion> 1:4*3

[1] ?

Page 9: Conceptos básicos de R

Prioridad del operador

• Los operadores basicos de R tienen las siguientesprioridades (listados en orden de mayor a menorimportancia).

^ potencia- + resta y suma unaria: operador sucesion%/% %% parte entera y resto de la division* / multiplicacion y division

• Las operaciones con mayor prioridad se realizan antesaquellos con menor prioridad

Page 10: Conceptos básicos de R

Prioridad del operador

• Los operadores basicos de R tienen las siguientesprioridades (listados en orden de mayor a menorimportancia).

^ potencia- + resta y suma unaria: operador sucesion%/% %% parte entera y resto de la division* / multiplicacion y division

• Las operaciones con mayor prioridad se realizan antesaquellos con menor prioridad

Ejemplos: 15%/%3 y 15%%3

Page 11: Conceptos básicos de R

Orden de evaluacion

• Evaluacion de las operaciones de la misma prioridad sellevan a cabo de izquierda a derecha (con excepcion de laexponenciacion, que toma lugar de derecha a izquierda).> 2^3^2

[1] 512

> (2^3)^2

[1] 64

> 2^(3^2)

[1] 512

Page 12: Conceptos básicos de R

Funciones de R

> sqrt(2)

[1] 1.414214

> log(10)

[1] 2.302585

> log10(10)

[1] 1

> sin(1)

[1] 0.841471

> 4 * atan(1)

[1] 3.141593

> sin(pi/2)

[1] 1

Page 13: Conceptos básicos de R

Funciones de R

> sqrt(2)

[1] 1.414214

> log(10)

[1] 2.302585

> log10(10)

[1] 1

> sin(1)

[1] 0.841471

> 4 * atan(1)

[1] 3.141593

> sin(pi/2)

[1] 1

El comando help, para obtener documentacion sobre alguncomando.> help("sin")

Page 14: Conceptos básicos de R

Asignaciones

• Los valores son almacenados asignando estos a unnombre.

• Resultando un par nombre-valuado que es llamadovariable.

• Las declaraciones> val = 20

> val <- 20

> 20 -> val

todos almacenan el valor 20 bajo el nombre val

• La declaracion “ = ” es preferida a “ <- ”

Page 15: Conceptos básicos de R

Usando variables

• Las variables pueden ser usadas en expresiones de lamisma forma que los numeros.

Page 16: Conceptos básicos de R

Usando variables

• Las variables pueden ser usadas en expresiones de lamisma forma que los numeros.

• Por ejemplo> val = 20

> val = val + 30

> val

[1] 50

Page 17: Conceptos básicos de R

Vectores numericos

R tiene la capacidad de trabajar con vectores de valores.Valores individuales pueden ser combinados en un vectorpor medio de la funcion c.

> val = c(5,6, 3, 4)

> val

Page 18: Conceptos básicos de R

Vectores numericos

R tiene la capacidad de trabajar con vectores de valores.Valores individuales pueden ser combinados en un vectorpor medio de la funcion c.

> val = c(5,6, 3, 4)

> val

La funcion scan():

> val = scan()

luego dar enter e insertar los numeros.

Page 19: Conceptos básicos de R

Vectores numericos

R tiene la capacidad de trabajar con vectores de valores.Valores individuales pueden ser combinados en un vectorpor medio de la funcion c.

> val = c(5,6, 3, 4)

> val

La funcion scan():

> val = scan()

luego dar enter e insertar los numeros.Los elementos de un vector tienen que ser del mismo tipo(numerico)

Page 20: Conceptos básicos de R

Sucesiones

Una manera simple de generar vectores es usando eloperador “ : ”. La expresion “ a:b ”, genera la sucesion deenteros desde “ a ” hasta “ b ”.> 1:33

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Ejemplos: > -10:10 ; > 10:-15

Page 21: Conceptos básicos de R

Sucesiones

Una manera simple de generar vectores es usando eloperador “ : ”. La expresion “ a:b ”, genera la sucesion deenteros desde “ a ” hasta “ b ”.> 1:33

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Ejemplos: > -10:10 ; > 10:-15

La funcion “ seq(from=1,to=1,by= ,length.out= ) ”,> seq(18)

> seq(5,-5)

> seq(0,5,0.5)

[1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

> seq(0,1,length.out=6)

[1] 0.0 0.2 0.4 0.6 0.8 1.0

Page 22: Conceptos básicos de R

Combinando vectores

La funcion “ c ” puede ser usada para combinar vectores yescalares dentro de un vector> x = c(1, 2, 3, 4)

> c(x, 10)

[1] 1 2 3 4 10

> c(x, x)

[1] 1 2 3 4 1 2 3 4

R almacena los valores escalares, como el 10 como, unvector de longitud uno, de modo que los argumentos en laexpresion anterior son vectores.

Page 23: Conceptos básicos de R

Combinando vectores

La funcion “ c ” puede ser usada para combinar vectores yescalares dentro de un vector> x = c(1, 2, 3, 4)

> c(x, 10)

[1] 1 2 3 4 10

> c(x, x)

[1] 1 2 3 4 1 2 3 4

R almacena los valores escalares, como el 10 como, unvector de longitud uno, de modo que los argumentos en laexpresion anterior son vectores.La funcion “ length ”, da como resultado la longitud de unvector en su argumento> length(x)

[1] 4

Page 24: Conceptos básicos de R

Aritmetica de vectores

Porque “todo es un vector” es natural esperar que lavariable definida “ x ” anteriormente se pueda operar comoun vector en general:> 2 * x + 1

[1] 3 5 7 9

Page 25: Conceptos básicos de R

Aritmetica de vectores

Porque “todo es un vector” es natural esperar que lavariable definida “ x ” anteriormente se pueda operar comoun vector en general:> 2 * x + 1

[1] 3 5 7 9

tambien es natural esperar esto> sqrt(x)

[1] 1.000000 1.414214 1.732051 2.000000

> x^2

[1] 1 4 9 16

> x*x

[1] 1 4 9 16

> x**x

[1] 1 4 27 256

Page 26: Conceptos básicos de R

Regla del reciclaje(rehusar)

Lo que es menos obvio acerca de la aritmetica de vectoreses lo que sucede cuando dos vectores de diferente longitudse combinan.> c(1, 2, 3, 4) + c(1, 2)

[1] 2 4 4 6

Este resultado es explicado por la regla de reciclaje usadapor R para definir este tipo de calculo.

Primero estira el vector mas corto para reciclar sus

elementos, luego combina los vectores elemento por

elemento.

Page 27: Conceptos básicos de R

Regla del reciclaje(rehusar)

Lo que es menos obvio acerca de la aritmetica de vectoreses lo que sucede cuando dos vectores de diferente longitudse combinan.> c(1, 2, 3, 4) + c(1, 2)

[1] 2 4 4 6

Este resultado es explicado por la regla de reciclaje usadapor R para definir este tipo de calculo.

Primero estira el vector mas corto para reciclar sus

elementos, luego combina los vectores elemento por

elemento.

Ejemplos:> c(1,2)+c(1,2,3,4)+c(1,2,3,4,5,6)

> c(1,2)+c(1,2,3,4)+c(1,2,3,4,5,6,7,8)

Page 28: Conceptos básicos de R

Elementos y subconjuntos

Elementos individules pueden ser extraidos desde de losvectores especificando sus indices. El tercer elemento depuede ser extraido desde “ x ” comom sigue.> x[3]

[1] 3

Page 29: Conceptos básicos de R

Elementos y subconjuntos

Elementos individules pueden ser extraidos desde de losvectores especificando sus indices. El tercer elemento depuede ser extraido desde “ x ” comom sigue.> x[3]

[1] 3

Tambien es posible extraer subvectores mediante laespecificacion vectores de subındices.> x[c(1, 3)]

[1] 1 3

Page 30: Conceptos básicos de R

Elementos y subconjuntos

Elementos individules pueden ser extraidos desde de losvectores especificando sus indices. El tercer elemento depuede ser extraido desde “ x ” comom sigue.> x[3]

[1] 3

Tambien es posible extraer subvectores mediante laespecificacion vectores de subındices.> x[c(1, 3)]

[1] 1 3

El operador de sucesion proporciona una manera util deextraer elementos de un vector> x[1:3]

[1] 1 2 3

Page 31: Conceptos básicos de R

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

Page 32: Conceptos básicos de R

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

Page 33: Conceptos básicos de R

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

Page 34: Conceptos básicos de R

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

> x[seq(2,10,by=2)]

Page 35: Conceptos básicos de R

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

> x[seq(2,10,by=2)]

• insertar en la posicion 5 del vector “ x ” el numero 20:

Page 36: Conceptos básicos de R

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

> x[seq(2,10,by=2)]

• insertar en la posicion 5 del vector “ x ” el numero 20:

> x = c(x[1:4],20,x[5:10])

Page 37: Conceptos básicos de R

Subındice negativo

A veces, en vez de la extraccion de los elementos de unvector correspondiente a un determinado conjunto desubındices, es posible que desee extraer los elementos queno se corresponden a un conjunto dado de subındices. Estose puede hacer mediante el uso de un conjunto de negativode subındices. Por ejemplo “ x[c(-1,-3)] ”, esto es,extraer todos los elementos de “ x ” excepto el primero y eltercero.> x=1:5

> x

[1] 1 2 3 4 5

> x[c(-1,-3)]

[1] 2 4 5

Page 38: Conceptos básicos de R

Subındice negativo

A veces, en vez de la extraccion de los elementos de unvector correspondiente a un determinado conjunto desubındices, es posible que desee extraer los elementos queno se corresponden a un conjunto dado de subındices. Estose puede hacer mediante el uso de un conjunto de negativode subındices. Por ejemplo “ x[c(-1,-3)] ”, esto es,extraer todos los elementos de “ x ” excepto el primero y eltercero.> x=1:5

> x

[1] 1 2 3 4 5

> x[c(-1,-3)]

[1] 2 4 5

No es posible mezclar subındices positivos con negativos.

Page 39: Conceptos básicos de R

Cambiando subconjunto de vectores

Ademas de la extraccion de los valores en las posicionesparticulares en un vector, es posible cambiar sus valores.Esto se hace poniendo el subconjunto a ser modificado en ellado izquierdo de la asignacion con el valor(s) de reposiciona la derecha.> y = 1:10

> y[4:6] = 0

> y

[1] 1 2 3 0 0 0 7 8 9 10

Page 40: Conceptos básicos de R

Cambiando subconjunto de vectores

Ademas de la extraccion de los valores en las posicionesparticulares en un vector, es posible cambiar sus valores.Esto se hace poniendo el subconjunto a ser modificado en ellado izquierdo de la asignacion con el valor(s) de reposiciona la derecha.> y = 1:10

> y[4:6] = 0

> y

[1] 1 2 3 0 0 0 7 8 9 10

Ejemplo: > y[4:6] = c(6,5,4)

Page 41: Conceptos básicos de R

Cambiando subconjunto de vectores

Ademas de la extraccion de los valores en las posicionesparticulares en un vector, es posible cambiar sus valores.Esto se hace poniendo el subconjunto a ser modificado en ellado izquierdo de la asignacion con el valor(s) de reposiciona la derecha.> y = 1:10

> y[4:6] = 0

> y

[1] 1 2 3 0 0 0 7 8 9 10

Ejemplo: > y[4:6] = c(6,5,4)

El vector que se incerta debe tener la misma longitud queel vector entrante.

Page 42: Conceptos básicos de R

Valores numericos especiales - Infinito

Cuando uno es dividido por cero, el resultado es infinito.Este tipo de resultado especial es tambien dado por R.> 1 / 0

[1] Inf

Aquı, Inf representa infinito positivo. Existe tambien elinfinito negativo> -1 / 0

[1] -Inf

Page 43: Conceptos básicos de R

Valores numericos especiales - Infinito

Infinito tiene todas las propiedades que se puede esperar.Por ejemplo> 1 + Inf

[1] Inf

y tambien> 1000 / Inf

[1] 0

Page 44: Conceptos básicos de R

Valores numericos especiales - Not a Number

Not a Number = No es un numero.R tambien tiene un valor especial, llamado NaN, que indicaque el resultado numerico es indefinido.> 0 / 0

[1] NaN

y restando infinito de infinito.> Inf - Inf

[1] NaN

Algunas funciones matematicas tambien produciranresultados NaN> sqrt(-1)

[1] NaN

Mensajes de aviso perdidos

In sqrt(-1) : Se han producido NaNs

Page 45: Conceptos básicos de R

Valores numericos especiales - Not avaliable

Not avalaible = No disponibleR tiene un valor particular que es usado para indicar queun valor es perdido o no disponible. El valor es indicadopor NA. Cualquier expresion aritmetica que contenga NA

producira NA como un resultado.> 1 + sin(NA)

[1] NA

El valor NA es usado usualmente para las observacionesestadısticas donde el valor no pudo ser registrado. Comocuando un encuestador visita una casa y no hay nadie.

Page 46: Conceptos básicos de R

Resumen de funciones - min, max y range

Las funciones min y max retorna el mınimo y el maximo delos valores contenidos en cualquiera de sus argumentos, y lafuncion range retorna un vector de longitud 2 conteniendoel mınimo y el maximo de los valores del argumento.> max(1:100)

[1] 100

> max(1:100, Inf)

[1] Inf

> range(1:100)

[1] 1 100

Page 47: Conceptos básicos de R

Resumen de funciones - sum, prod y diff

Las funciones sum y prod calculan la suma y el producto detodos los elementos en sus argumentos.> sum(1:100)

[1] 5050

> prod(1:10)

[1] 3628800

La funcion diff, diferencia cada una de las componentesdel vector con la anterior de manera sucesiva.> x=c(1,2,5,10)

> diff(x)

[1] 1 3 5

Page 48: Conceptos básicos de R

Resumen de funciones y NA

En cualquier de las funciones presentadas la presencia deNA y NaN en cualquiera de los argumentos producira unresultado que es NA y NaN.> min(NA, 100)

[1] NA

Estos NA y NaN valores pueden ser excluidos especificandoun argumento adicional na.rm=TRUE o na.rm=T.> min(10, 20, NA, na.rm = TRUE)

[1] 10

> min(1,2,NaN,na.rm=TRUE)

[1] 1

Page 49: Conceptos básicos de R

Acumulados

> cumsum(1:10)

[1] 1 3 6 10 15 21 28 36 45 55

> cumprod(1:6)

[1] 1 2 6 24 120 720

> cummax(1:10)

[1] 1 2 3 4 5 6 7 8 9 10

> cummin(1:10)

[1] 1 1 1 1 1 1 1 1 1 1

Las funciones acumulativas no tienen el argumento na.rm.

Page 50: Conceptos básicos de R

Funciones paralelas

Finalmente, hay versiones paralelas de las funcionesmaximo y mınimo. Estas toman un numero de vectorescomo argumentos y aplica la regla de reciclaje para estos, yluego calcula (max o min) a traves de las correspondientescomponentes de los argumentos.> pmin(c(2,3),c(4,5),c(5,6))

[1] 2 3

> pmax(c(2,3),c(5,4,-2,-3))

[1] 5 4 2 3

> pmax(0, c(-1, 0, 1))

[1] 0 0 1

Las versiones paralelas de las funciones mınimo y maximoaceptan el argumento na.rm

Page 51: Conceptos básicos de R

Vectores logicos

Los vectores logicos contiene los valores TRUE y FALSE.> b = c(TRUE, TRUE, FALSE, FALSE)

Tambien se puede usar T=TRUE y F=FALSE, reescribiendo> b = c(T,T,F,F)

La extraccion y modificacion de vectores logicos se lleva acabo exactamente de la misma manera que como se hacecon los vectores numericos> b[1:3]

[1] TRUE TRUE FALSE

> b[1] = F

> b

[1] FALSE TRUE FALSE FALSE

Page 52: Conceptos básicos de R

Generando valores logicos

Los valores logicos se producen a menudo como resultadode afirmaciones hechas sobre otros tipos de valores.> 3 < 4

[1] TRUE

> 3 > 4

[1] FALSE

Los operadores de comparacion tambien se pueden aplicara los vectores de valores.> c(1, 2, 3, 4) < 3

[1] TRUE TRUE FALSE FALSE

Page 53: Conceptos básicos de R

Operadores de comparacion

El conjunto completo de operadores logicos se muestra acontinuacion. Todos los operadores retornan valores logicos.

< menor que<= menor o igual== igual!= no es igual> mayor que>= mayor o igual

Page 54: Conceptos básicos de R

Las conjunciones logicas

Los valores logicos se pueden combinar con los operadoresbooleanos, “ & ” que denota la logica “ y ”, “ | ” el cualdenota la logica “ o ” y “ ! ” que denota negacion.> x = c(1, 2, 3, 4)

> x > 2

[1] FALSE FALSE TRUE TRUE

> x < 2 | x > 3

[1] TRUE FALSE FALSE TRUE

Las funciones any y all pueden ser usadas para verificar sialguno o todos los elementos de un vector logico sonverdaderos.> all(x > 0)

[1] TRUE

> any(x > 2)

[1] TRUE

Page 55: Conceptos básicos de R

Negacion

El operador ! es usado para indicar la negacion logica.Este cambia TRUE en FALSE y viceversa.> !(3 < 4)

[1] FALSE

> TRUE & ! FALSE

[1] TRUE

> b = c(T,F,T,T)

> !b

[1] FALSE TRUE FALSE FALSE

Page 56: Conceptos básicos de R

Logica y valores NA

Los vectores logico pueden contener valores NA. Estoproduce una logica de tres valores.

x & y y

TRUE FALSE NA

TRUE TRUE FALSE NA

x FALSE FALSE FALSE FALSE

NA NA FALSE NA

x | y y

TRUE FALSE NA

TRUE TRUE TRUE TRUE

x FALSE TRUE FALSE NA

NA TRUE NA NA

Page 57: Conceptos básicos de R

Subdivision logica

Es posible extraer subconjuntos de vectores mediante el usode valores logicos.Como ejemplo, consideremos la expresion de subdivisionx[x>2].La expresion x>2 define un vector logico con la mismalongitud que x, y el subconjunto contiene aquellos valoresde x que corresponden a los valores de TRUE en este vector.> x = c(1, 2, 3, 4)

> x[x > 2]

[1] 3 4

Page 58: Conceptos básicos de R

Seleccion condicional

La funcion ifelse (ifelse(test, yes, no)), la funcionhace posible elegir entre los elementos de dos vectores enbase a los valores de un vector logico.> ifelse(c(T,T,F,F),c(2,1,5),c(5,6,3,7,8,9))

[1] 2 1 3 7

> x = 1:10

> ifelse(x > 5, x, -x)

[1] -1 -2 -3 -4 -5 6 7 8 9 10

Los valores que se estan seleccionados son reciclados si esnecesario.> x = 1:10

> ifelse(x > 5, x, 0)

[1] 0 0 0 0 0 6 7 8 9 10

Page 59: Conceptos básicos de R

Vector de caracteres

Vectores de caracteres tienen elementos que son cadenas decaracteres.Cadenas de carateres son caracteres encerrados entrecomillas, "como esto", o comas, 'como esto'.Vectores de caracteres pueden ser creados con la funcion c

> s = c("primero", "segundo", "tercero")

y manipulado exactamente de la misma manera que otrosvectores> s[1:2]

[1] "primero" "segundo"

> s[1] = "initial"

> s

[1] "inicial" "segundo" "tercero"

Page 60: Conceptos básicos de R

Manipulacion de cadenas

La funcion nchar retorna la longitud de las cadenas decaracteres en un vector de caracteres> s

[1] "inicial" "segundo" "tercero"

> nchar(s)

[1] 7 7 7

Subcadenas pueden ser extraidas con substring

(substring(cadena(s),inicio(s),final(es)).> substring("abcdef", 2, c(4,5))

[1] "bcd" "bcde"

> substring(s, 1, 2:3)

[1] "in" "seg" "te"

(Note el uso de reciclaje en este ultimo.)

Page 61: Conceptos básicos de R

Pegando cadenas

Las cadenas pueden ser “ pegadas ” con paste.> paste("primero","segundo","tercero")

[1] "primero segundo tercero"

Por defecto, las cadenas son unidos por un espacio entreellos, pero es posible usar cualquier sucesion de caracterescomo un separador.> paste("primero","segundo","tercero",sep=":")

[1] "primero:segundo:tercero"

Usando una cadena separadora vacıa concatenara lascadenas.> paste("primero","segundo","tercero",sep="")

[1] "primerosegundotercero"

Page 62: Conceptos básicos de R

Pegando vectores

paste trabajara con vectores, ası como cadenas simples. Elresultado es definido por la regla de reciclaje.> paste(s,"elemento",sep="-")

[1] "inicial-elemento" "segundo-elemento"

[3] "tercero-elemento"

Un argumento adicional, collapse, dara como resultado launion de las cadenas de caracteres separados por elseparador especificado.> paste(s, collapse = " -> ")

[1] "inicial -> segundo -> tercero"

Page 63: Conceptos básicos de R

Vectores complejo-valuados

Los vectores pueden contener valores como numeroscomplejos. Estos son escritos en la notacion estandar.> > z = 10+20i

> z

[1] 10+20i

> z=c(2,3,1+1i)

> z

[1] 2+0i 3+0i 1+1i

La aritmetica aplicada sobre los valores complejos obedecelas reglas de la aritmetica de los complejos.> z = -1+0i

> sqrt(z)

[1] 0+1i

Page 64: Conceptos básicos de R

Modalidad y longitud de un vector

Los vectores tienen asociada una modalidad(mode) (una de"logical", "numeric", "complex" o "character") ylongitud(length).> mode(1:10)

[1] "numeric"

> length(1:100)

[1] 100

Cada una de las cuatro modalidades de un vector tiene suscorrespondientes funciones (logic, nmeric, comlex ycharacter) que pueden ser usadas para crear vectores conesas modalidades> logical(5)

[1] FALSE FALSE FALSE FALSE FALSE

> numeric(5)

[1] 0 0 0 0 0

Page 65: Conceptos básicos de R

Creando vectores

Una funcion llamada vector puede tambien ser usada paracrear vectores de cualquiera de los 4 tipos basicos.> vector("numeric", 5)

[1] 0 0 0 0 0

> vector("logical", 5)

[1] FALSE FALSE FALSE FALSE FALSE

Es posible crear vectores con una longitud cero usandocualquiera de las funciones enumeradas anteriormente.> numeric(0)

numeric(0)

Ninguna informacion de indexacion es impresa para losvectores de longitud cero (porque no existen elementos aindexar).

Page 66: Conceptos básicos de R

Coercion de tipos

Los tipos son automaticamente convertidos ocoercidos(coaccionados) en R si la necesidad surge.> c(TRUE, 17)

[1] 1 17

> c(TRUE, 17, "doce")

[1] "TRUE" "17" "doce"

Hay un ordenamiento natural de las modalidades devectores en R. Valores logicos pueden ser interpretadoscomo numericos si se toma el valor de FALSE sera 0 y elvalor de TRUE como 1, valores numericos pueden serinterpretados como complejos tomando la parte imaginariacomo cero y todos los modos pueden ser interpretados comocaracteres solo tomando sus representaciones impresas.> c(T,1+3i)

Page 67: Conceptos básicos de R

Idiomas de la coercion de tipos

La coercion esta en el corazon de varios idiomas en R. Unejemplo comun es contar el numero de elementos de unvector para la cual una condicion es verdad. Por ejemplo,la expresion sum(x>5) cuenta el numero de elementos en x

que mayores que 5.> x = 1:10

> x > 5

[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE

[9] TRUE TRUE

> sum(x > 5)

[1] 5

> cumsum(x > 5)

[1] 0 0 0 0 0 1 2 3 4 5

Page 68: Conceptos básicos de R

Coercion explıcita

R forzara automaticamente coerciona vectores utilizando elorden natural de modo vector. Otras ocaciones debenllevarse acabo utilizando coercion explıcita con las funcionesas.logical, as.numeric, as.complex y as.character.> "2" + "3"

Error en "2" + "3" : argumento no-numerico para

operador binario

> as.numeric("2") + as.numeric("3")

[1] 5

Page 69: Conceptos básicos de R

Vectores nombrados

Vectores de cualquiera de los tipos basicos pueden seraumentados para proporcionar nombres a sus elementos.> v=1:4

> names(v)=c("a","b","c","d")

> v

a b c d

1 2 3 4

Los nombres etiquetados al vector pueden ser extraidosusando la funcion names.> names(v)

[1] "a" "b" "c" "d"

Page 70: Conceptos básicos de R

Subconfiguracion usando nombres

los nombres pueden tambien ser usados para extraerelementos y subvectores. Si v se define por las declaraciones> v = c(1, 2, 3, 4)

> names(v) = c("a", "b", "c", "d")

entonces podemos extraer subconjuntos de elementos comosigue> v["a"]

a

1

> v[c("a", "d")]

a d

1 4

Page 71: Conceptos básicos de R

Subconfiguracion usando nombres

los nombres pueden tambien ser usados para extraerelementos y subvectores. Si v se define por las declaraciones> v = c(1, 2, 3, 4)

> names(v) = c("a", "b", "c", "d")

entonces podemos extraer subconjuntos de elementos comosigue> v["a"]

a

1

> v[c("a", "d")]

a d

1 4

Ejercicio: Cambiar la etiqueta "b" por "m"

Page 72: Conceptos básicos de R

Subconfiguracion usando nombres

los nombres pueden tambien ser usados para extraerelementos y subvectores. Si v se define por las declaraciones> v = c(1, 2, 3, 4)

> names(v) = c("a", "b", "c", "d")

entonces podemos extraer subconjuntos de elementos comosigue> v["a"]

a

1

> v[c("a", "d")]

a d

1 4

Ejercicio: Cambiar la etiqueta "b" por "m"> names(v)[2]="m"

Page 73: Conceptos básicos de R

Listas con nombres

Los elementos de una lista pueden ser nombrados. Esto sepuede hacer con la funcion names o directamente en lallamada a list. Cuando los elementos son nombrados, elnombre aparece en lugar de la informacion de indexacion> v=list(a=10, b="once", T)

> v

$a

[1] 10

$b

[1] "once"

[[3]]

[1] TRUE

Page 74: Conceptos básicos de R

Elementos y subconjuntos de listas

Cuando preguntamos por un elemento de una lista, usar [[]]. Cuando preguntamos por un subconjunto, usar [ ]

> lst = list(10, "once", T)

> lst[[1]]

[1] 10

> lst[1]

[[1]]

[1] 10

El primer resultado aquı es el elemento 10 se extrae de lalista. El segundo es una lista conteniendo ese elemento.

Page 75: Conceptos básicos de R

Extraccion de elementos con nombre

Elementos con nombre pueden ser extraidos de una lista dela misma manera que los elementos con nombre sonextraidos desde vectores.> lst = list(a=10, b="once", T)

> lst[["a"]]

[1] 10

Esta es una operacion comun, existe una abreviatura paraesto.> lst$a

[1] 10

Page 76: Conceptos básicos de R

El objeto NULL

Existe un objeto especial en R llamado el objeto NULL quees usado para representar “ nada ”. El objeto NULL tieneuna longitud de cero y puede ser libremente coaccionado yasea aun vector o lista de longitud cero.> length(NULL)

[1] 0

> as.numeric(NULL)

numeric(0)

> as.list(NULL)

list()