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
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
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()