El primer tipo de objeto que manejaremos es el vector (colecci ́on ordenada de elementos del mismo tipo). Podemos escribir vectores de varias maneras, utilizando la opci ́on “:” (el vector comienza en el primer n ́umero suministrado y finaliza en el segundo o en un n ́umero anterior sin sobrepasarlo, tanto en orden ascendente como descendente) ́o mediante la funci ́on de concatenaci ́on “c( )”.
1:10
## [1] 1 2 3 4 5 6 7 8 9 10
10:1
## [1] 10 9 8 7 6 5 4 3 2 1
1.5:7.5
## [1] 1.5 2.5 3.5 4.5 5.5 6.5 7.5
c(1,2,4,3)
## [1] 1 2 4 3
c(1:5)
## [1] 1 2 3 4 5
c(1:5,2,4,-3)
## [1] 1 2 3 4 5 2 4 -3
Tenemos formas adicionales de crear vectores. Una de las m ́as comunes es utilizando la funci ́on “seq(a,b,c)”, que genera secuencias de n ́umeros reales, donde el primer elemento indicar ́ıa el principio de la secuencia, el segundo el final y el tercero el incremento que se debe usar para generar la secuencia. Aunque tambi ́en podemos poner la funci ́on de estas formas “seq(length = d, from = a, to = b)” o “seq(by = c, from = a, to = b)” siendo “d” la longitud del vector.
seq(1,10,2)
## [1] 1 3 5 7 9
seq(from = 1, to = 20, by =2)
## [1] 1 3 5 7 9 11 13 15 17 19
seq(1,10,2)
## [1] 1 3 5 7 9
seq(from = 1, to = 10, by =2)
## [1] 1 3 5 7 9
# Si lo que queremos es 6 elementos
seq(from = 1, to = 10, length =6)
## [1] 1.0 2.8 4.6 6.4 8.2 10.0
# Con el argumento along creamos un vector con los indices del vector al que llamemos
x<-c(1,2,1,3,4)
seq(along=x)
## [1] 1 2 3 4 5
y<-25
seq(along=y)
## [1] 1
La funcíon “rep(a, b)” que crea un vector con “b” elementos id ́enticos al valor “a”.
# repetimos el elemento 3 diez veces
rep(3,10)
## [1] 3 3 3 3 3 3 3 3 3 3
# repetimos el vector "a" 2 veces
a=1:5; rep(a,2)
## [1] 1 2 3 4 5 1 2 3 4 5
# repetimos cada elemento del vector 3 veces de 5 en 5
rep(1:3,rep(5,3))
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
y<-rep(2,5)
# repetimos cada elemento de "a" tantas veces como indica "y"
rep(a,y)
## [1] 1 1 2 2 3 3 4 4 5 5
rep(a,a)
## [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
x<-2
# repetimos el elemento "x" 5 veces
rep(x,length=5)
## [1] 2 2 2 2 2
La funcíon “sequence( )” que crea una secuencias de enteros. Cada secuencia terminar ́a en el n ́umero especificado como argumento.
sequence(c(3,2))
## [1] 1 2 3 1 2
# Hemos creado una secuencia del vector 1:3 y del 1:2
sequence(c(5,3))
## [1] 1 2 3 4 5 1 2 3
# Hemos creado una secuencia del vector 1:5 y del 1:3
sequence(c(c(2,3),3))
## [1] 1 2 1 2 3 1 2 3
# Hemos creado una secuencia del vector 1:2, 1:3 y del 1:3
La funci ́on “gl( )” (generador de niveles) genera series regulares de factores. Tiene la forma “gl(a, b)” donde “a” es el n ́umero de niveles (o clases) y “b” es el n ́umero de r ́eplicas en cada nivel. Se pueden usar dos opciones: “length” para especificar el n ́umero de datos producidos, y “labels” para especificar los nombres de los factores.
# Repetimos los dos niveles 6 veces con la etiqueta Hombre y Mujer
gl(2, 6, labels = c("Hombre", "Mujer"))
## [1] Hombre Hombre Hombre Hombre Hombre Hombre Mujer Mujer Mujer Mujer
## [11] Mujer Mujer
## Levels: Hombre Mujer
# 20 elementos de dos niveles primero uno y luego el otro
gl(2, 1, 20)
## [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
## Levels: 1 2
# 20 elementos de dos niveles los dos a la vez
gl(2, 2, 20)
## [1] 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2
## Levels: 1 2
Finalmente, “expand.grid( )” crea una tabla de datos con todas las combinaciones posibles de los elementos de los vectores o factores que proporcionemos como argumentos.
expand.grid(edad=c(36,25), peso=c(75,60), sexo=c("Hombre","Mujer"))
## edad peso sexo
## 1 36 75 Hombre
## 2 25 75 Hombre
## 3 36 60 Hombre
## 4 25 60 Hombre
## 5 36 75 Mujer
## 6 25 75 Mujer
## 7 36 60 Mujer
## 8 25 60 Mujer
# Crea todas las combinaciones posibles
R puede escribir vectores con caracteres o n ́umeros, pero siempre entiende los elementos como si fuesen del mismo tipo. Un vector siempre est ́a formado por elementos del mismo tipo, no pueden mezclarse n ́umeros y cadenas de caracteres (se transformar ́ıa en cadenas de caracteres). Del mismo modo, si mezcla n ́umeros reales y complejos, se entender ́ıan como complejos.
c("Hola", "Adios")
## [1] "Hola" "Adios"
c(1, 1+2i)
## [1] 1+0i 1+2i
c(1-1i, 2)
## [1] 1-1i 2+0i
dias.semana=c("Lunes","Martes","Mi ́ercoles","Jueves","Viernes","S ́abado","Domingo")
dias.semana
## [1] "Lunes" "Martes" "Mi ´ercoles" "Jueves" "Viernes"
## [6] "S ´abado" "Domingo"
Una opci ́on de R es que podemos asignar nombres a los elementos de un vector mediante la funci ́on “names”(tambi ́en se podr ́a utilizar para nombrar cualquier objeto).
x<-1:7
x
## [1] 1 2 3 4 5 6 7
names(x)<-c("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo")
x
## Lunes Martes Miercoles Jueves Viernes Sabado Domingo
## 1 2 3 4 5 6 7
Tambi ́en podemos conocer o cambiar el modo o tipo de los elementos que forman el vector mediante la funci ́on “mode” (tomar ́ıa los valores: logical, numeric, complex, character, null, list, function, graphics, expression, name, frame, raw y unknown).
y<-seq(from=3, to=11, by=2)
y
## [1] 3 5 7 9 11
mode(y)
## [1] "numeric"
# Cambiamos y a complejo
mode(y)<-"complex"
y
## [1] 3+0i 5+0i 7+0i 9+0i 11+0i