SlideShare ist ein Scribd-Unternehmen logo
1 von 76
Downloaden Sie, um offline zu lesen
Conceptos B´asicos de
R
Linkedin: Alvaro Miguel Naupay Gusukuma
k z anaupay@hotmail.com
blog: http://mat-alvaro.blogspot.com/
August 15, 2013
El lenguaje R
• Fue inspirado en S, creado en Laboratorios Bell por John
Chambers y sus colaboradores Rick Becker, Allan Wilks
y Duncan Temple Lang entre los a˜nos 1975 y 1998.
• R es un lenguaje de computaci´on (y asociado a un
entorno computacional) para llevar acabo c´alculos
estad´ısticos.
• Parece muy similar a S, pero la similitud fue
reestructurada encima de piezas de software muy
diferentes.
• R fue creado por Robert Gentleman y Ross Ihaka en
la Universidad de Aukland como banco de prueba para
probar algunas ideas estad´ısticas.
• Ahora se ha convertido en una herramienta con todas las
funciones para llevar a cabo c´alculos estad´ısticos y otras
cosas m´as.
El proyecto R (The R project)
• El Proyecto R es una colaboraci´on internacional de
investigadores de estad´ıstica computacional.
• Hay aproximadamente 20 miembros en el equipo
principal de R, que mantienen y mejoran a R.
• Las ediciones del entorno R son hechos a trav´es del
CRAN (comprehensive R archive network = amplia red
de archivos R) dos veces por a˜no.
(http://www.r-project.org/)
• El software se distribuye bajo una licencia de “software
libre”, lo que hace posible que cualquier persona lo
descargue y utilice.
• Hay m´as de 3500 extensiones de paquetes que han sido
contribuidos al CRAN.
Conceptos b´asicos de R
• R es un lenguaje de computadora que es procesado por
un programa especial llamado int´erpretre. Este programa
lee y eval´ua la expresiones del lenguaje R, e imprime los
valores determinados por las expresiones.
• El int´erprete indica que est´a a la espera de una entrada
para imprimir su prompt (“ > ”) en la siguiente l´ınea con
un resultado.
• RStudio, es una interfase para R, permite ver los
paquetes instalados y los script.
(http://www.rstudio.com/).
• R se puede instalar en Linux, Windows y (Mac)OS X.
Comandos importantes
getwd()
setwd("direcci´on.extension")
Usando R como calculadora
• Los usuarios escriben expresiones al interprete de R.
• R responde mediante el c´alculo e impresi´on de las
respuestas.
> 23+99
[1] 122
> 3/7
[1] 0.4285714
> 12^ 3
[1] 1728
Agrupar y Evaluar
• Se aplican las reglas aritm´eticas normales, multiplicaci´on
y divisi´on se ejecuta antes que la adici´on y la resta.
> 4+3*5
[1] 19
• Las normas de evaluaci´on por defecto pueden ser
invalidados por el uso de par´entesis.
> (4+3)*5
[1] 35
Agrupar y Evaluar
• Se aplican las reglas aritm´eticas normales, multiplicaci´on
y divisi´on se ejecuta antes que la adici´on y la resta.
> 4+3*5
[1] 19
• Las normas de evaluaci´on por defecto pueden ser
invalidados por el uso de par´entesis.
> (4+3)*5
[1] 35
Operador sucesi´on
> 1:4*3
[1] ?
Prioridad del operador
• Los operadores b´asicos de R tienen las siguientes
prioridades (listados en orden de mayor a menor
importancia).
^ potencia
- + resta y suma unaria
: operador sucesi´on
%/% %% parte entera y resto de la divisi´on
* / multiplicaci´on y divisi´on
• Las operaciones con mayor prioridad se realizan antes
aquellos con menor prioridad
Prioridad del operador
• Los operadores b´asicos de R tienen las siguientes
prioridades (listados en orden de mayor a menor
importancia).
^ potencia
- + resta y suma unaria
: operador sucesi´on
%/% %% parte entera y resto de la divisi´on
* / multiplicaci´on y divisi´on
• Las operaciones con mayor prioridad se realizan antes
aquellos con menor prioridad
Ejemplos: 15%/%3 y 15%%3
Orden de evaluaci´on
• Evaluaci´on de las operaciones de la misma prioridad se
llevan a cabo de izquierda a derecha (con excepci´on de la
exponenciaci´on, que toma lugar de derecha a izquierda).
> 2^3^2
[1] 512
> (2^3)^2
[1] 64
> 2^(3^2)
[1] 512
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
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 documentaci´on sobre alg´un
comando.
> help("sin")
Asignaciones
• Los valores son almacenados asignando estos a un
nombre.
• Resultando un par nombre-valuado que es llamado
variable.
• Las declaraciones
> val = 20
> val <- 20
> 20 -> val
todos almacenan el valor 20 bajo el nombre val
• La declaraci´on “ = ” es preferida a “ <- ”
Usando variables
• Las variables pueden ser usadas en expresiones de la
misma forma que los n´umeros.
Usando variables
• Las variables pueden ser usadas en expresiones de la
misma forma que los n´umeros.
• Por ejemplo
> val = 20
> val = val + 30
> val
[1] 50
Vectores num´ericos
R tiene la capacidad de trabajar con vectores de valores.
Valores individuales pueden ser combinados en un vector
por medio de la funci´on c.
> val = c(5,6, 3, 4)
> val
Vectores num´ericos
R tiene la capacidad de trabajar con vectores de valores.
Valores individuales pueden ser combinados en un vector
por medio de la funci´on c.
> val = c(5,6, 3, 4)
> val
La funci´on scan():
> val = scan()
luego dar enter e insertar los n´umeros.
Vectores num´ericos
R tiene la capacidad de trabajar con vectores de valores.
Valores individuales pueden ser combinados en un vector
por medio de la funci´on c.
> val = c(5,6, 3, 4)
> val
La funci´on scan():
> val = scan()
luego dar enter e insertar los n´umeros.
Los elementos de un vector tienen que ser del mismo tipo
(num´erico)
Sucesiones
Una manera simple de generar vectores es usando el
operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on de
enteros 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
Sucesiones
Una manera simple de generar vectores es usando el
operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on de
enteros 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 funci´on “ 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
Combinando vectores
La funci´on “ c ” puede ser usada para combinar vectores y
escalares 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, un
vector de longitud uno, de modo que los argumentos en la
expresi´on anterior son vectores.
Combinando vectores
La funci´on “ c ” puede ser usada para combinar vectores y
escalares 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, un
vector de longitud uno, de modo que los argumentos en la
expresi´on anterior son vectores.
La funci´on “ length ”, da como resultado la longitud de un
vector en su argumento
> length(x)
[1] 4
Aritm´etica de vectores
Porque “todo es un vector” es natural esperar que la
variable definida “ x ” anteriormente se pueda operar como
un vector en general:
> 2 * x + 1
[1] 3 5 7 9
Aritm´etica de vectores
Porque “todo es un vector” es natural esperar que la
variable definida “ x ” anteriormente se pueda operar como
un vector en general:
> 2 * x + 1
[1] 3 5 7 9
tambi´en 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
Regla del reciclaje(rehusar)
Lo que es menos obvio acerca de la aritm´etica de vectores
es lo que sucede cuando dos vectores de diferente longitud
se combinan.
> c(1, 2, 3, 4) + c(1, 2)
[1] 2 4 4 6
Este resultado es explicado por la regla de reciclaje usada
por R para definir este tipo de c´alculo.
Primero estira el vector m´as corto para reciclar sus
elementos, luego combina los vectores elemento por
elemento.
Regla del reciclaje(rehusar)
Lo que es menos obvio acerca de la aritm´etica de vectores
es lo que sucede cuando dos vectores de diferente longitud
se combinan.
> c(1, 2, 3, 4) + c(1, 2)
[1] 2 4 4 6
Este resultado es explicado por la regla de reciclaje usada
por R para definir este tipo de c´alculo.
Primero estira el vector m´as 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)
Elementos y subconjuntos
Elementos individules pueden ser extraidos desde de los
vectores especificando sus indices. El tercer elemento de
puede ser extraido desde “ x ” comom sigue.
> x[3]
[1] 3
Elementos y subconjuntos
Elementos individules pueden ser extraidos desde de los
vectores especificando sus indices. El tercer elemento de
puede ser extraido desde “ x ” comom sigue.
> x[3]
[1] 3
Tambi´en es posible extraer subvectores mediante la
especificaci´on vectores de sub´ındices.
> x[c(1, 3)]
[1] 1 3
Elementos y subconjuntos
Elementos individules pueden ser extraidos desde de los
vectores especificando sus indices. El tercer elemento de
puede ser extraido desde “ x ” comom sigue.
> x[3]
[1] 3
Tambi´en es posible extraer subvectores mediante la
especificaci´on vectores de sub´ındices.
> x[c(1, 3)]
[1] 1 3
El operador de sucesi´on proporciona una manera ´util de
extraer elementos de un vector
> x[1:3]
[1] 1 2 3
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vector,
> x=1:10
• extraer la primera, la quinta, novena y d´ecima
componente del vector “ x ”
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vector,
> x=1:10
• extraer la primera, la quinta, novena y d´ecima
componente del vector “ x ”
> x[c(1,5,9,10)]
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vector,
> x=1:10
• extraer la primera, la quinta, novena y d´ecima
componente del vector “ x ”
> x[c(1,5,9,10)]
• extraer las s´olo las componentes pares de “ x ”:
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vector,
> x=1:10
• extraer la primera, la quinta, novena y d´ecima
componente del vector “ x ”
> x[c(1,5,9,10)]
• extraer las s´olo las componentes pares de “ x ”:
> x[seq(2,10,by=2)]
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vector,
> x=1:10
• extraer la primera, la quinta, novena y d´ecima
componente del vector “ x ”
> x[c(1,5,9,10)]
• extraer las s´olo las componentes pares de “ x ”:
> x[seq(2,10,by=2)]
• insertar en la posici´on 5 del vector “ x ” el n´umero 20:
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vector,
> x=1:10
• extraer la primera, la quinta, novena y d´ecima
componente del vector “ x ”
> x[c(1,5,9,10)]
• extraer las s´olo las componentes pares de “ x ”:
> x[seq(2,10,by=2)]
• insertar en la posici´on 5 del vector “ x ” el n´umero 20:
> x = c(x[1:4],20,x[5:10])
Sub´ındice negativo
A veces, en vez de la extracci´on de los elementos de un
vector correspondiente a un determinado conjunto de
sub´ındices, es posible que desee extraer los elementos que
no se corresponden a un conjunto dado de sub´ındices. Esto
se puede hacer mediante el uso de un conjunto de negativo
de sub´ındices. Por ejemplo “ x[c(-1,-3)] ”, esto es,
extraer todos los elementos de “ x ” excepto el primero y el
tercero.
> x=1:5
> x
[1] 1 2 3 4 5
> x[c(-1,-3)]
[1] 2 4 5
Sub´ındice negativo
A veces, en vez de la extracci´on de los elementos de un
vector correspondiente a un determinado conjunto de
sub´ındices, es posible que desee extraer los elementos que
no se corresponden a un conjunto dado de sub´ındices. Esto
se puede hacer mediante el uso de un conjunto de negativo
de sub´ındices. Por ejemplo “ x[c(-1,-3)] ”, esto es,
extraer todos los elementos de “ x ” excepto el primero y el
tercero.
> 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.
Cambiando subconjunto de vectores
Adem´as de la extracci´on de los valores en las posiciones
particulares en un vector, es posible cambiar sus valores.
Esto se hace poniendo el subconjunto a ser modificado en el
lado izquierdo de la asignaci´on con el valor(s) de reposici´on
a la derecha.
> y = 1:10
> y[4:6] = 0
> y
[1] 1 2 3 0 0 0 7 8 9 10
Cambiando subconjunto de vectores
Adem´as de la extracci´on de los valores en las posiciones
particulares en un vector, es posible cambiar sus valores.
Esto se hace poniendo el subconjunto a ser modificado en el
lado izquierdo de la asignaci´on con el valor(s) de reposici´on
a 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)
Cambiando subconjunto de vectores
Adem´as de la extracci´on de los valores en las posiciones
particulares en un vector, es posible cambiar sus valores.
Esto se hace poniendo el subconjunto a ser modificado en el
lado izquierdo de la asignaci´on con el valor(s) de reposici´on
a 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 que
el vector entrante.
Valores num´ericos especiales - Infinito
Cuando uno es dividido por cero, el resultado es infinito.
Este tipo de resultado especial es tambi´en dado por R.
> 1 / 0
[1] Inf
Aqu´ı, Inf representa infinito positivo. Existe tambi´en el
infinito negativo
> -1 / 0
[1] -Inf
Valores num´ericos especiales - Infinito
Infinito tiene todas las propiedades que se puede esperar.
Por ejemplo
> 1 + Inf
[1] Inf
y tambi´en
> 1000 / Inf
[1] 0
Valores num´ericos especiales - Not a Number
Not a Number = No es un n´umero.
R tambi´en tiene un valor especial, llamado NaN, que indica
que el resultado num´erico es indefinido.
> 0 / 0
[1] NaN
y restando infinito de infinito.
> Inf - Inf
[1] NaN
Algunas funciones matem´aticas tambi´en producir´an
resultados NaN
> sqrt(-1)
[1] NaN
Mensajes de aviso perdidos
In sqrt(-1) : Se han producido NaNs
Valores num´ericos especiales - Not avaliable
Not avalaible = No disponible
R tiene un valor particular que es usado para indicar que
un valor es perdido o no disponible. El valor es indicado
por NA. Cualquier expresi´on aritm´etica que contenga NA
producir´a NA como un resultado.
> 1 + sin(NA)
[1] NA
El valor NA es usado usualmente para las observaciones
estad´ısticas donde el valor no pudo ser registrado. Como
cuando un encuestador visita una casa y no hay nadie.
Resumen de funciones - min, max y range
Las funciones min y max retorna el m´ınimo y el m´aximo de
los valores contenidos en cualquiera de sus argumentos, y la
funci´on range retorna un vector de longitud 2 conteniendo
el m´ınimo y el m´aximo de los valores del argumento.
> max(1:100)
[1] 100
> max(1:100, Inf)
[1] Inf
> range(1:100)
[1] 1 100
Resumen de funciones - sum, prod y diff
Las funciones sum y prod calculan la suma y el producto de
todos los elementos en sus argumentos.
> sum(1:100)
[1] 5050
> prod(1:10)
[1] 3628800
La funci´on diff, diferencia cada una de las componentes
del vector con la anterior de manera sucesiva.
> x=c(1,2,5,10)
> diff(x)
[1] 1 3 5
Resumen de funciones y NA
En cualquier de las funciones presentadas la presencia de
NA y NaN en cualquiera de los argumentos producir´a un
resultado que es NA y NaN.
> min(NA, 100)
[1] NA
Estos NA y NaN valores pueden ser excluidos especificando
un 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
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.
Funciones paralelas
Finalmente, hay versiones paralelas de las funciones
m´aximo y m´ınimo. Estas toman un n´umero de vectores
como argumentos y aplica la regla de reciclaje para estos, y
luego calcula (max o min) a trav´es de las correspondientes
componentes 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 m´aximo
aceptan el argumento na.rm
Vectores l´ogicos
Los vectores l´ogicos contiene los valores TRUE y FALSE.
> b = c(TRUE, TRUE, FALSE, FALSE)
Tambi´en se puede usar T=TRUE y F=FALSE, reescribiendo
> b = c(T,T,F,F)
La extracci´on y modificaci´on de vectores l´ogicos se lleva a
cabo exactamente de la misma manera que como se hace
con los vectores num´ericos
> b[1:3]
[1] TRUE TRUE FALSE
> b[1] = F
> b
[1] FALSE TRUE FALSE FALSE
Generando valores l´ogicos
Los valores l´ogicos se producen a menudo como resultado
de afirmaciones hechas sobre otros tipos de valores.
> 3 < 4
[1] TRUE
> 3 > 4
[1] FALSE
Los operadores de comparaci´on tambi´en se pueden aplicar
a los vectores de valores.
> c(1, 2, 3, 4) < 3
[1] TRUE TRUE FALSE FALSE
Operadores de comparaci´on
El conjunto completo de operadores l´ogicos se muestra a
continuaci´on. Todos los operadores retornan valores l´ogicos.
< menor que
<= menor o igual
== igual
!= no es igual
> mayor que
>= mayor o igual
Las conjunciones l´ogicas
Los valores l´ogicos se pueden combinar con los operadores
booleanos, “ & ” que denota la l´ogica “ y ”, “ | ” el cual
denota la l´ogica “ o ” y “ ! ” que denota negaci´on.
> 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 si
alguno o todos los elementos de un vector l´ogico son
verdaderos.
> all(x > 0)
[1] TRUE
> any(x > 2)
[1] TRUE
Negaci´on
El operador ! es usado para indicar la negaci´on l´ogica.
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
L´ogica y valores NA
Los vectores l´ogico pueden contener valores NA. Esto
produce una l´ogica 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
Subdivisi´on l´ogica
Es posible extraer subconjuntos de vectores mediante el uso
de valores l´ogicos.
Como ejemplo, consideremos la expresi´on de subdivisi´on
x[x>2].
La expresi´on x>2 define un vector l´ogico con la misma
longitud que x, y el subconjunto contiene aquellos valores
de x que corresponden a los valores de TRUE en este vector.
> x = c(1, 2, 3, 4)
> x[x > 2]
[1] 3 4
Selecci´on condicional
La funci´on ifelse (ifelse(test, yes, no)), la funci´on
hace posible elegir entre los elementos de dos vectores en
base a los valores de un vector l´ogico.
> 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 est´an seleccionados son reciclados si es
necesario.
> x = 1:10
> ifelse(x > 5, x, 0)
[1] 0 0 0 0 0 6 7 8 9 10
Vector de caracteres
Vectores de caracteres tienen elementos que son cadenas de
caracteres.
Cadenas de carateres son caracteres encerrados entre
comillas, "como esto", o comas, 'como esto'.
Vectores de caracteres pueden ser creados con la funci´on c
> s = c("primero", "segundo", "tercero")
y manipulado exactamente de la misma manera que otros
vectores
> s[1:2]
[1] "primero" "segundo"
> s[1] = "initial"
> s
[1] "inicial" "segundo" "tercero"
Manipulaci´on de cadenas
La funci´on nchar retorna la longitud de las cadenas de
caracteres 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.)
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 entre
ellos, pero es posible usar cualquier sucesi´on de caracteres
como un separador.
> paste("primero","segundo","tercero",sep=":")
[1] "primero:segundo:tercero"
Usando una cadena separadora vac´ıa concatenar´a las
cadenas.
> paste("primero","segundo","tercero",sep="")
[1] "primerosegundotercero"
Pegando vectores
paste trabajar´a con vectores, as´ı como cadenas simples. El
resultado es definido por la regla de reciclaje.
> paste(s,"elemento",sep="-")
[1] "inicial-elemento" "segundo-elemento"
[3] "tercero-elemento"
Un argumento adicional, collapse, dar´a como resultado la
uni´on de las cadenas de caracteres separados por el
separador especificado.
> paste(s, collapse = " -> ")
[1] "inicial -> segundo -> tercero"
Vectores complejo-valuados
Los vectores pueden contener valores como n´umeros
complejos. Estos son escritos en la notaci´on estandar.
> > z = 10+20i
> z
[1] 10+20i
> z=c(2,3,1+1i)
> z
[1] 2+0i 3+0i 1+1i
La aritm´etica aplicada sobre los valores complejos obedece
las reglas de la aritm´etica de los complejos.
> z = -1+0i
> sqrt(z)
[1] 0+1i
Modalidad y longitud de un vector
Los vectores tienen asociada una modalidad(mode) (una de
"logical", "numeric", "complex" o "character") y
longitud(length).
> mode(1:10)
[1] "numeric"
> length(1:100)
[1] 100
Cada una de las cuatro modalidades de un vector tiene sus
correspondientes funciones (logic, nmeric, comlex y
character) que pueden ser usadas para crear vectores con
esas modalidades
> logical(5)
[1] FALSE FALSE FALSE FALSE FALSE
> numeric(5)
[1] 0 0 0 0 0
Creando vectores
Una funci´on llamada vector puede tambi´en ser usada para
crear vectores de cualquiera de los 4 tipos b´asicos.
> 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 usando
cualquiera de las funciones enumeradas anteriormente.
> numeric(0)
numeric(0)
Ninguna informaci´on de indexaci´on es impresa para los
vectores de longitud cero (porque no existen elementos a
indexar).
Coerci´on de tipos
Los tipos son autom´aticamente convertidos o
coercidos(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 de
vectores en R. Valores l´ogicos pueden ser interpretados
como num´ericos si se toma el valor de FALSE ser´a 0 y el
valor de TRUE como 1, valores num´ericos pueden ser
interpretados como complejos tomando la parte imaginaria
como cero y todos los modos pueden ser interpretados como
caracteres s´olo tomando sus representaciones impresas.
> c(T,1+3i)
Idiomas de la coerci´on de tipos
La coerci´on est´a en el coraz´on de varios idiomas en R. Un
ejemplo com´un es contar el n´umero de elementos de un
vector para la cual una condici´on es verdad. Por ejemplo,
la expresi´on sum(x>5) cuenta el n´umero 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
Coerci´on expl´ıcita
R forzar´a autom´aticamente coerciona vectores utilizando el
orden natural de modo vector. Otras ocaciones deben
llevarse acabo utilizando coerci´on expl´ıcita con las funciones
as.logical, as.numeric, as.complex y as.character.
> "2" + "3"
Error en "2" + "3" : argumento no-num´erico para
operador binario
> as.numeric("2") + as.numeric("3")
[1] 5
Vectores nombrados
Vectores de cualquiera de los tipos b´asicos pueden ser
aumentados 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 extraidos
usando la funci´on names.
> names(v)
[1] "a" "b" "c" "d"
Subconfiguraci´on usando nombres
los nombres pueden tambi´en ser usados para extraer
elementos 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 como
sigue
> v["a"]
a
1
> v[c("a", "d")]
a d
1 4
Subconfiguraci´on usando nombres
los nombres pueden tambi´en ser usados para extraer
elementos 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 como
sigue
> v["a"]
a
1
> v[c("a", "d")]
a d
1 4
Ejercicio: Cambiar la etiqueta "b" por "m"
Subconfiguraci´on usando nombres
los nombres pueden tambi´en ser usados para extraer
elementos 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 como
sigue
> v["a"]
a
1
> v[c("a", "d")]
a d
1 4
Ejercicio: Cambiar la etiqueta "b" por "m"
> names(v)[2]="m"
Listas con nombres
Los elementos de una lista pueden ser nombrados. Esto se
puede hacer con la funci´on names o directamente en la
llamada a list. Cuando los elementos son nombrados, el
nombre aparece en lugar de la informaci´on de indexaci´on
> v=list(a=10, b="once", T)
> v
$a
[1] 10
$b
[1] "once"
[[3]]
[1] TRUE
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 la
lista. El segundo es una lista conteniendo ese elemento.
Extracci´on de elementos con nombre
Elementos con nombre pueden ser extraidos de una lista de
la misma manera que los elementos con nombre son
extraidos desde vectores.
> lst = list(a=10, b="once", T)
> lst[["a"]]
[1] 10
Esta es una operaci´on com´un, existe una abreviatura para
esto.
> lst$a
[1] 10
El objeto NULL
Existe un objeto especial en R llamado el objeto NULL que
es usado para representar “ nada ”. El objeto NULL tiene
una longitud de cero y puede ser libremente coaccionado ya
sea aun vector o lista de longitud cero.
> length(NULL)
[1] 0
> as.numeric(NULL)
numeric(0)
> as.list(NULL)
list()

Weitere ähnliche Inhalte

Ähnlich wie Conceptos básicos de R

Ähnlich wie Conceptos básicos de R (20)

FdP_Diapositivas_2018
FdP_Diapositivas_2018FdP_Diapositivas_2018
FdP_Diapositivas_2018
 
Estadística con Lenguaje R: Sesión 2
Estadística con Lenguaje R: Sesión 2Estadística con Lenguaje R: Sesión 2
Estadística con Lenguaje R: Sesión 2
 
Comandos r
Comandos rComandos r
Comandos r
 
Articulo en r
Articulo en rArticulo en r
Articulo en r
 
resumen matlab
resumen matlabresumen matlab
resumen matlab
 
Mathematica para cálculo iii (archivo pdf)
Mathematica para cálculo iii (archivo pdf)Mathematica para cálculo iii (archivo pdf)
Mathematica para cálculo iii (archivo pdf)
 
CLASE 01.pdf
CLASE 01.pdfCLASE 01.pdf
CLASE 01.pdf
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Taller 3
Taller 3Taller 3
Taller 3
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
 
clase de matlab
clase  de   matlabclase  de   matlab
clase de matlab
 
Computacion ii cap i
Computacion ii cap iComputacion ii cap i
Computacion ii cap i
 
computacion
computacioncomputacion
computacion
 
Computacion
ComputacionComputacion
Computacion
 
CLASE 04.pdf
CLASE 04.pdfCLASE 04.pdf
CLASE 04.pdf
 
Matlab basico
Matlab basicoMatlab basico
Matlab basico
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicado
 
Lógica de la programación
Lógica de la programaciónLógica de la programación
Lógica de la programación
 
Tema 10-1x2
Tema 10-1x2Tema 10-1x2
Tema 10-1x2
 

Mehr von Alvaro Miguel Naupay Gusukuma

Problemas y ejercicios de analisis matematico demidovich - ed. mir
Problemas y ejercicios de analisis matematico   demidovich - ed. mirProblemas y ejercicios de analisis matematico   demidovich - ed. mir
Problemas y ejercicios de analisis matematico demidovich - ed. mirAlvaro Miguel Naupay Gusukuma
 
Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]
Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]
Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]Alvaro Miguel Naupay Gusukuma
 

Mehr von Alvaro Miguel Naupay Gusukuma (20)

Problemas3 (algunas soluciones)
Problemas3 (algunas soluciones)Problemas3 (algunas soluciones)
Problemas3 (algunas soluciones)
 
Problemas3
Problemas3Problemas3
Problemas3
 
Problemas2 (algunas soluciones)
Problemas2 (algunas soluciones)Problemas2 (algunas soluciones)
Problemas2 (algunas soluciones)
 
Problemas2
Problemas2Problemas2
Problemas2
 
Problemas1 (algunas soluciones)
Problemas1 (algunas soluciones)Problemas1 (algunas soluciones)
Problemas1 (algunas soluciones)
 
Problemas1
Problemas1Problemas1
Problemas1
 
Curriculum vitae
Curriculum vitaeCurriculum vitae
Curriculum vitae
 
Funciones (notas de clase incompletas)
Funciones (notas de clase incompletas)Funciones (notas de clase incompletas)
Funciones (notas de clase incompletas)
 
2019-II Cálculo diferencial Examen final
2019-II Cálculo diferencial  Examen final2019-II Cálculo diferencial  Examen final
2019-II Cálculo diferencial Examen final
 
Sustitutorio 2019-II
Sustitutorio 2019-IISustitutorio 2019-II
Sustitutorio 2019-II
 
Final
FinalFinal
Final
 
PC6 2018-I
PC6 2018-IPC6 2018-I
PC6 2018-I
 
Cali3sol
Cali3solCali3sol
Cali3sol
 
Parcial 1 (Repaso 2018)
Parcial 1 (Repaso 2018)Parcial 1 (Repaso 2018)
Parcial 1 (Repaso 2018)
 
Problemas2
Problemas2Problemas2
Problemas2
 
Problemas1
Problemas1Problemas1
Problemas1
 
E.D. Examen Final (2017-I)
E.D. Examen Final (2017-I)E.D. Examen Final (2017-I)
E.D. Examen Final (2017-I)
 
Parcial(2017 i) (solucionario)
Parcial(2017 i) (solucionario)Parcial(2017 i) (solucionario)
Parcial(2017 i) (solucionario)
 
Problemas y ejercicios de analisis matematico demidovich - ed. mir
Problemas y ejercicios de analisis matematico   demidovich - ed. mirProblemas y ejercicios de analisis matematico   demidovich - ed. mir
Problemas y ejercicios de analisis matematico demidovich - ed. mir
 
Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]
Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]
Problemas y ejercicios de analisis matematico (g. n. berman) [mir, 1977]
 

Conceptos básicos de R

  • 1. Conceptos B´asicos de R Linkedin: Alvaro Miguel Naupay Gusukuma k z anaupay@hotmail.com blog: http://mat-alvaro.blogspot.com/ August 15, 2013
  • 2. El lenguaje R • Fue inspirado en S, creado en Laboratorios Bell por John Chambers y sus colaboradores Rick Becker, Allan Wilks y Duncan Temple Lang entre los a˜nos 1975 y 1998. • R es un lenguaje de computaci´on (y asociado a un entorno computacional) para llevar acabo c´alculos estad´ısticos. • Parece muy similar a S, pero la similitud fue reestructurada encima de piezas de software muy diferentes. • R fue creado por Robert Gentleman y Ross Ihaka en la Universidad de Aukland como banco de prueba para probar algunas ideas estad´ısticas. • Ahora se ha convertido en una herramienta con todas las funciones para llevar a cabo c´alculos estad´ısticos y otras cosas m´as.
  • 3. El proyecto R (The R project) • El Proyecto R es una colaboraci´on internacional de investigadores de estad´ıstica computacional. • Hay aproximadamente 20 miembros en el equipo principal de R, que mantienen y mejoran a R. • Las ediciones del entorno R son hechos a trav´es del CRAN (comprehensive R archive network = amplia red de archivos R) dos veces por a˜no. (http://www.r-project.org/) • El software se distribuye bajo una licencia de “software libre”, lo que hace posible que cualquier persona lo descargue y utilice. • Hay m´as de 3500 extensiones de paquetes que han sido contribuidos al CRAN.
  • 4. Conceptos b´asicos de R • R es un lenguaje de computadora que es procesado por un programa especial llamado int´erpretre. Este programa lee y eval´ua la expresiones del lenguaje R, e imprime los valores determinados por las expresiones. • El int´erprete indica que est´a a la espera de una entrada para imprimir su prompt (“ > ”) en la siguiente l´ınea con un resultado. • RStudio, es una interfase para R, permite ver los paquetes instalados y los script. (http://www.rstudio.com/). • R se puede instalar en Linux, Windows y (Mac)OS X.
  • 6. Usando R como calculadora • Los usuarios escriben expresiones al interprete de R. • R responde mediante el c´alculo e impresi´on de las respuestas. > 23+99 [1] 122 > 3/7 [1] 0.4285714 > 12^ 3 [1] 1728
  • 7. Agrupar y Evaluar • Se aplican las reglas aritm´eticas normales, multiplicaci´on y divisi´on se ejecuta antes que la adici´on y la resta. > 4+3*5 [1] 19 • Las normas de evaluaci´on por defecto pueden ser invalidados por el uso de par´entesis. > (4+3)*5 [1] 35
  • 8. Agrupar y Evaluar • Se aplican las reglas aritm´eticas normales, multiplicaci´on y divisi´on se ejecuta antes que la adici´on y la resta. > 4+3*5 [1] 19 • Las normas de evaluaci´on por defecto pueden ser invalidados por el uso de par´entesis. > (4+3)*5 [1] 35 Operador sucesi´on > 1:4*3 [1] ?
  • 9. Prioridad del operador • Los operadores b´asicos de R tienen las siguientes prioridades (listados en orden de mayor a menor importancia). ^ potencia - + resta y suma unaria : operador sucesi´on %/% %% parte entera y resto de la divisi´on * / multiplicaci´on y divisi´on • Las operaciones con mayor prioridad se realizan antes aquellos con menor prioridad
  • 10. Prioridad del operador • Los operadores b´asicos de R tienen las siguientes prioridades (listados en orden de mayor a menor importancia). ^ potencia - + resta y suma unaria : operador sucesi´on %/% %% parte entera y resto de la divisi´on * / multiplicaci´on y divisi´on • Las operaciones con mayor prioridad se realizan antes aquellos con menor prioridad Ejemplos: 15%/%3 y 15%%3
  • 11. Orden de evaluaci´on • Evaluaci´on de las operaciones de la misma prioridad se llevan a cabo de izquierda a derecha (con excepci´on de la exponenciaci´on, que toma lugar de derecha a izquierda). > 2^3^2 [1] 512 > (2^3)^2 [1] 64 > 2^(3^2) [1] 512
  • 12. 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
  • 13. 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 documentaci´on sobre alg´un comando. > help("sin")
  • 14. Asignaciones • Los valores son almacenados asignando estos a un nombre. • Resultando un par nombre-valuado que es llamado variable. • Las declaraciones > val = 20 > val <- 20 > 20 -> val todos almacenan el valor 20 bajo el nombre val • La declaraci´on “ = ” es preferida a “ <- ”
  • 15. Usando variables • Las variables pueden ser usadas en expresiones de la misma forma que los n´umeros.
  • 16. Usando variables • Las variables pueden ser usadas en expresiones de la misma forma que los n´umeros. • Por ejemplo > val = 20 > val = val + 30 > val [1] 50
  • 17. Vectores num´ericos R tiene la capacidad de trabajar con vectores de valores. Valores individuales pueden ser combinados en un vector por medio de la funci´on c. > val = c(5,6, 3, 4) > val
  • 18. Vectores num´ericos R tiene la capacidad de trabajar con vectores de valores. Valores individuales pueden ser combinados en un vector por medio de la funci´on c. > val = c(5,6, 3, 4) > val La funci´on scan(): > val = scan() luego dar enter e insertar los n´umeros.
  • 19. Vectores num´ericos R tiene la capacidad de trabajar con vectores de valores. Valores individuales pueden ser combinados en un vector por medio de la funci´on c. > val = c(5,6, 3, 4) > val La funci´on scan(): > val = scan() luego dar enter e insertar los n´umeros. Los elementos de un vector tienen que ser del mismo tipo (num´erico)
  • 20. Sucesiones Una manera simple de generar vectores es usando el operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on de enteros 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
  • 21. Sucesiones Una manera simple de generar vectores es usando el operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on de enteros 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 funci´on “ 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
  • 22. Combinando vectores La funci´on “ c ” puede ser usada para combinar vectores y escalares 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, un vector de longitud uno, de modo que los argumentos en la expresi´on anterior son vectores.
  • 23. Combinando vectores La funci´on “ c ” puede ser usada para combinar vectores y escalares 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, un vector de longitud uno, de modo que los argumentos en la expresi´on anterior son vectores. La funci´on “ length ”, da como resultado la longitud de un vector en su argumento > length(x) [1] 4
  • 24. Aritm´etica de vectores Porque “todo es un vector” es natural esperar que la variable definida “ x ” anteriormente se pueda operar como un vector en general: > 2 * x + 1 [1] 3 5 7 9
  • 25. Aritm´etica de vectores Porque “todo es un vector” es natural esperar que la variable definida “ x ” anteriormente se pueda operar como un vector en general: > 2 * x + 1 [1] 3 5 7 9 tambi´en 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
  • 26. Regla del reciclaje(rehusar) Lo que es menos obvio acerca de la aritm´etica de vectores es lo que sucede cuando dos vectores de diferente longitud se combinan. > c(1, 2, 3, 4) + c(1, 2) [1] 2 4 4 6 Este resultado es explicado por la regla de reciclaje usada por R para definir este tipo de c´alculo. Primero estira el vector m´as corto para reciclar sus elementos, luego combina los vectores elemento por elemento.
  • 27. Regla del reciclaje(rehusar) Lo que es menos obvio acerca de la aritm´etica de vectores es lo que sucede cuando dos vectores de diferente longitud se combinan. > c(1, 2, 3, 4) + c(1, 2) [1] 2 4 4 6 Este resultado es explicado por la regla de reciclaje usada por R para definir este tipo de c´alculo. Primero estira el vector m´as 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)
  • 28. Elementos y subconjuntos Elementos individules pueden ser extraidos desde de los vectores especificando sus indices. El tercer elemento de puede ser extraido desde “ x ” comom sigue. > x[3] [1] 3
  • 29. Elementos y subconjuntos Elementos individules pueden ser extraidos desde de los vectores especificando sus indices. El tercer elemento de puede ser extraido desde “ x ” comom sigue. > x[3] [1] 3 Tambi´en es posible extraer subvectores mediante la especificaci´on vectores de sub´ındices. > x[c(1, 3)] [1] 1 3
  • 30. Elementos y subconjuntos Elementos individules pueden ser extraidos desde de los vectores especificando sus indices. El tercer elemento de puede ser extraido desde “ x ” comom sigue. > x[3] [1] 3 Tambi´en es posible extraer subvectores mediante la especificaci´on vectores de sub´ındices. > x[c(1, 3)] [1] 1 3 El operador de sucesi´on proporciona una manera ´util de extraer elementos de un vector > x[1:3] [1] 1 2 3
  • 31. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ”
  • 32. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)]
  • 33. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”:
  • 34. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”: > x[seq(2,10,by=2)]
  • 35. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”: > x[seq(2,10,by=2)] • insertar en la posici´on 5 del vector “ x ” el n´umero 20:
  • 36. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”: > x[seq(2,10,by=2)] • insertar en la posici´on 5 del vector “ x ” el n´umero 20: > x = c(x[1:4],20,x[5:10])
  • 37. Sub´ındice negativo A veces, en vez de la extracci´on de los elementos de un vector correspondiente a un determinado conjunto de sub´ındices, es posible que desee extraer los elementos que no se corresponden a un conjunto dado de sub´ındices. Esto se puede hacer mediante el uso de un conjunto de negativo de sub´ındices. Por ejemplo “ x[c(-1,-3)] ”, esto es, extraer todos los elementos de “ x ” excepto el primero y el tercero. > x=1:5 > x [1] 1 2 3 4 5 > x[c(-1,-3)] [1] 2 4 5
  • 38. Sub´ındice negativo A veces, en vez de la extracci´on de los elementos de un vector correspondiente a un determinado conjunto de sub´ındices, es posible que desee extraer los elementos que no se corresponden a un conjunto dado de sub´ındices. Esto se puede hacer mediante el uso de un conjunto de negativo de sub´ındices. Por ejemplo “ x[c(-1,-3)] ”, esto es, extraer todos los elementos de “ x ” excepto el primero y el tercero. > 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.
  • 39. Cambiando subconjunto de vectores Adem´as de la extracci´on de los valores en las posiciones particulares en un vector, es posible cambiar sus valores. Esto se hace poniendo el subconjunto a ser modificado en el lado izquierdo de la asignaci´on con el valor(s) de reposici´on a la derecha. > y = 1:10 > y[4:6] = 0 > y [1] 1 2 3 0 0 0 7 8 9 10
  • 40. Cambiando subconjunto de vectores Adem´as de la extracci´on de los valores en las posiciones particulares en un vector, es posible cambiar sus valores. Esto se hace poniendo el subconjunto a ser modificado en el lado izquierdo de la asignaci´on con el valor(s) de reposici´on a 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)
  • 41. Cambiando subconjunto de vectores Adem´as de la extracci´on de los valores en las posiciones particulares en un vector, es posible cambiar sus valores. Esto se hace poniendo el subconjunto a ser modificado en el lado izquierdo de la asignaci´on con el valor(s) de reposici´on a 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 que el vector entrante.
  • 42. Valores num´ericos especiales - Infinito Cuando uno es dividido por cero, el resultado es infinito. Este tipo de resultado especial es tambi´en dado por R. > 1 / 0 [1] Inf Aqu´ı, Inf representa infinito positivo. Existe tambi´en el infinito negativo > -1 / 0 [1] -Inf
  • 43. Valores num´ericos especiales - Infinito Infinito tiene todas las propiedades que se puede esperar. Por ejemplo > 1 + Inf [1] Inf y tambi´en > 1000 / Inf [1] 0
  • 44. Valores num´ericos especiales - Not a Number Not a Number = No es un n´umero. R tambi´en tiene un valor especial, llamado NaN, que indica que el resultado num´erico es indefinido. > 0 / 0 [1] NaN y restando infinito de infinito. > Inf - Inf [1] NaN Algunas funciones matem´aticas tambi´en producir´an resultados NaN > sqrt(-1) [1] NaN Mensajes de aviso perdidos In sqrt(-1) : Se han producido NaNs
  • 45. Valores num´ericos especiales - Not avaliable Not avalaible = No disponible R tiene un valor particular que es usado para indicar que un valor es perdido o no disponible. El valor es indicado por NA. Cualquier expresi´on aritm´etica que contenga NA producir´a NA como un resultado. > 1 + sin(NA) [1] NA El valor NA es usado usualmente para las observaciones estad´ısticas donde el valor no pudo ser registrado. Como cuando un encuestador visita una casa y no hay nadie.
  • 46. Resumen de funciones - min, max y range Las funciones min y max retorna el m´ınimo y el m´aximo de los valores contenidos en cualquiera de sus argumentos, y la funci´on range retorna un vector de longitud 2 conteniendo el m´ınimo y el m´aximo de los valores del argumento. > max(1:100) [1] 100 > max(1:100, Inf) [1] Inf > range(1:100) [1] 1 100
  • 47. Resumen de funciones - sum, prod y diff Las funciones sum y prod calculan la suma y el producto de todos los elementos en sus argumentos. > sum(1:100) [1] 5050 > prod(1:10) [1] 3628800 La funci´on diff, diferencia cada una de las componentes del vector con la anterior de manera sucesiva. > x=c(1,2,5,10) > diff(x) [1] 1 3 5
  • 48. Resumen de funciones y NA En cualquier de las funciones presentadas la presencia de NA y NaN en cualquiera de los argumentos producir´a un resultado que es NA y NaN. > min(NA, 100) [1] NA Estos NA y NaN valores pueden ser excluidos especificando un 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
  • 49. 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.
  • 50. Funciones paralelas Finalmente, hay versiones paralelas de las funciones m´aximo y m´ınimo. Estas toman un n´umero de vectores como argumentos y aplica la regla de reciclaje para estos, y luego calcula (max o min) a trav´es de las correspondientes componentes 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 m´aximo aceptan el argumento na.rm
  • 51. Vectores l´ogicos Los vectores l´ogicos contiene los valores TRUE y FALSE. > b = c(TRUE, TRUE, FALSE, FALSE) Tambi´en se puede usar T=TRUE y F=FALSE, reescribiendo > b = c(T,T,F,F) La extracci´on y modificaci´on de vectores l´ogicos se lleva a cabo exactamente de la misma manera que como se hace con los vectores num´ericos > b[1:3] [1] TRUE TRUE FALSE > b[1] = F > b [1] FALSE TRUE FALSE FALSE
  • 52. Generando valores l´ogicos Los valores l´ogicos se producen a menudo como resultado de afirmaciones hechas sobre otros tipos de valores. > 3 < 4 [1] TRUE > 3 > 4 [1] FALSE Los operadores de comparaci´on tambi´en se pueden aplicar a los vectores de valores. > c(1, 2, 3, 4) < 3 [1] TRUE TRUE FALSE FALSE
  • 53. Operadores de comparaci´on El conjunto completo de operadores l´ogicos se muestra a continuaci´on. Todos los operadores retornan valores l´ogicos. < menor que <= menor o igual == igual != no es igual > mayor que >= mayor o igual
  • 54. Las conjunciones l´ogicas Los valores l´ogicos se pueden combinar con los operadores booleanos, “ & ” que denota la l´ogica “ y ”, “ | ” el cual denota la l´ogica “ o ” y “ ! ” que denota negaci´on. > 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 si alguno o todos los elementos de un vector l´ogico son verdaderos. > all(x > 0) [1] TRUE > any(x > 2) [1] TRUE
  • 55. Negaci´on El operador ! es usado para indicar la negaci´on l´ogica. 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
  • 56. L´ogica y valores NA Los vectores l´ogico pueden contener valores NA. Esto produce una l´ogica 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
  • 57. Subdivisi´on l´ogica Es posible extraer subconjuntos de vectores mediante el uso de valores l´ogicos. Como ejemplo, consideremos la expresi´on de subdivisi´on x[x>2]. La expresi´on x>2 define un vector l´ogico con la misma longitud que x, y el subconjunto contiene aquellos valores de x que corresponden a los valores de TRUE en este vector. > x = c(1, 2, 3, 4) > x[x > 2] [1] 3 4
  • 58. Selecci´on condicional La funci´on ifelse (ifelse(test, yes, no)), la funci´on hace posible elegir entre los elementos de dos vectores en base a los valores de un vector l´ogico. > 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 est´an seleccionados son reciclados si es necesario. > x = 1:10 > ifelse(x > 5, x, 0) [1] 0 0 0 0 0 6 7 8 9 10
  • 59. Vector de caracteres Vectores de caracteres tienen elementos que son cadenas de caracteres. Cadenas de carateres son caracteres encerrados entre comillas, "como esto", o comas, 'como esto'. Vectores de caracteres pueden ser creados con la funci´on c > s = c("primero", "segundo", "tercero") y manipulado exactamente de la misma manera que otros vectores > s[1:2] [1] "primero" "segundo" > s[1] = "initial" > s [1] "inicial" "segundo" "tercero"
  • 60. Manipulaci´on de cadenas La funci´on nchar retorna la longitud de las cadenas de caracteres 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.)
  • 61. 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 entre ellos, pero es posible usar cualquier sucesi´on de caracteres como un separador. > paste("primero","segundo","tercero",sep=":") [1] "primero:segundo:tercero" Usando una cadena separadora vac´ıa concatenar´a las cadenas. > paste("primero","segundo","tercero",sep="") [1] "primerosegundotercero"
  • 62. Pegando vectores paste trabajar´a con vectores, as´ı como cadenas simples. El resultado es definido por la regla de reciclaje. > paste(s,"elemento",sep="-") [1] "inicial-elemento" "segundo-elemento" [3] "tercero-elemento" Un argumento adicional, collapse, dar´a como resultado la uni´on de las cadenas de caracteres separados por el separador especificado. > paste(s, collapse = " -> ") [1] "inicial -> segundo -> tercero"
  • 63. Vectores complejo-valuados Los vectores pueden contener valores como n´umeros complejos. Estos son escritos en la notaci´on estandar. > > z = 10+20i > z [1] 10+20i > z=c(2,3,1+1i) > z [1] 2+0i 3+0i 1+1i La aritm´etica aplicada sobre los valores complejos obedece las reglas de la aritm´etica de los complejos. > z = -1+0i > sqrt(z) [1] 0+1i
  • 64. Modalidad y longitud de un vector Los vectores tienen asociada una modalidad(mode) (una de "logical", "numeric", "complex" o "character") y longitud(length). > mode(1:10) [1] "numeric" > length(1:100) [1] 100 Cada una de las cuatro modalidades de un vector tiene sus correspondientes funciones (logic, nmeric, comlex y character) que pueden ser usadas para crear vectores con esas modalidades > logical(5) [1] FALSE FALSE FALSE FALSE FALSE > numeric(5) [1] 0 0 0 0 0
  • 65. Creando vectores Una funci´on llamada vector puede tambi´en ser usada para crear vectores de cualquiera de los 4 tipos b´asicos. > 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 usando cualquiera de las funciones enumeradas anteriormente. > numeric(0) numeric(0) Ninguna informaci´on de indexaci´on es impresa para los vectores de longitud cero (porque no existen elementos a indexar).
  • 66. Coerci´on de tipos Los tipos son autom´aticamente convertidos o coercidos(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 de vectores en R. Valores l´ogicos pueden ser interpretados como num´ericos si se toma el valor de FALSE ser´a 0 y el valor de TRUE como 1, valores num´ericos pueden ser interpretados como complejos tomando la parte imaginaria como cero y todos los modos pueden ser interpretados como caracteres s´olo tomando sus representaciones impresas. > c(T,1+3i)
  • 67. Idiomas de la coerci´on de tipos La coerci´on est´a en el coraz´on de varios idiomas en R. Un ejemplo com´un es contar el n´umero de elementos de un vector para la cual una condici´on es verdad. Por ejemplo, la expresi´on sum(x>5) cuenta el n´umero 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
  • 68. Coerci´on expl´ıcita R forzar´a autom´aticamente coerciona vectores utilizando el orden natural de modo vector. Otras ocaciones deben llevarse acabo utilizando coerci´on expl´ıcita con las funciones as.logical, as.numeric, as.complex y as.character. > "2" + "3" Error en "2" + "3" : argumento no-num´erico para operador binario > as.numeric("2") + as.numeric("3") [1] 5
  • 69. Vectores nombrados Vectores de cualquiera de los tipos b´asicos pueden ser aumentados 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 extraidos usando la funci´on names. > names(v) [1] "a" "b" "c" "d"
  • 70. Subconfiguraci´on usando nombres los nombres pueden tambi´en ser usados para extraer elementos 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 como sigue > v["a"] a 1 > v[c("a", "d")] a d 1 4
  • 71. Subconfiguraci´on usando nombres los nombres pueden tambi´en ser usados para extraer elementos 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 como sigue > v["a"] a 1 > v[c("a", "d")] a d 1 4 Ejercicio: Cambiar la etiqueta "b" por "m"
  • 72. Subconfiguraci´on usando nombres los nombres pueden tambi´en ser usados para extraer elementos 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 como sigue > v["a"] a 1 > v[c("a", "d")] a d 1 4 Ejercicio: Cambiar la etiqueta "b" por "m" > names(v)[2]="m"
  • 73. Listas con nombres Los elementos de una lista pueden ser nombrados. Esto se puede hacer con la funci´on names o directamente en la llamada a list. Cuando los elementos son nombrados, el nombre aparece en lugar de la informaci´on de indexaci´on > v=list(a=10, b="once", T) > v $a [1] 10 $b [1] "once" [[3]] [1] TRUE
  • 74. 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 la lista. El segundo es una lista conteniendo ese elemento.
  • 75. Extracci´on de elementos con nombre Elementos con nombre pueden ser extraidos de una lista de la misma manera que los elementos con nombre son extraidos desde vectores. > lst = list(a=10, b="once", T) > lst[["a"]] [1] 10 Esta es una operaci´on com´un, existe una abreviatura para esto. > lst$a [1] 10
  • 76. El objeto NULL Existe un objeto especial en R llamado el objeto NULL que es usado para representar “ nada ”. El objeto NULL tiene una longitud de cero y puede ser libremente coaccionado ya sea aun vector o lista de longitud cero. > length(NULL) [1] 0 > as.numeric(NULL) numeric(0) > as.list(NULL) list()