4  Vectores

Para crear un vector en R, usaremos “c( )”. La creacion de vectores puede ser de varios tipos de datos.

Ejemplos:

c(2, 4, 5, 6, 3)
[1] 2 4 5 6 3
x <- c(2, 4, 5, 6, 3)
class(x)
[1] "numeric"
y <- c("Perú", "Colombia", "Argentina")
class(y)
[1] "character"
z <- c(5L, "Perú", FALSE)
class(z)
[1] "character"

4.1 Vectores con nombre de elemento

Lo que hace es que cada elemento del vector tendrá un valor. Esto es util para la creación de diccionarios.

# Asignando nombres
v1 <- c(peru="0051", francia="0033", alemania="0039") #otra forma
v1 <- c("peru"="0051", "francia"="0033", "alemania"="0039")
v1
    peru  francia alemania 
  "0051"   "0033"   "0039" 
# nombres de los elementos de v1
names(v1)
[1] "peru"     "francia"  "alemania"

Si tenemos el nombre y su valor por separados, podemos juntarlos

codigos <- c("0051", "0033", "0039")
pais <- c("peru", "francia", "alemania")
names(codigos) <- pais
codigos
    peru  francia alemania 
  "0051"   "0033"   "0039" 

4.2 Secuencia

Sirva para generar secuencias regulares. Para esto usaremos “seq( )”

#Formas de generar una secuencia
seq(from=1, to=8)
[1] 1 2 3 4 5 6 7 8
seq(1, 8)
[1] 1 2 3 4 5 6 7 8
1:8
[1] 1 2 3 4 5 6 7 8

Si queremos hacer una secuencia pero saltando numeros, usaremos lo siguiente:

#Formas de generar
seq(from=4, to=10, by=2)
[1]  4  6  8 10
seq(4, 10, 2)
[1]  4  6  8 10

Si queremos mostrar cierta cantidad de numeros en una secuencias, usaremos esto:

#Formas de generar
seq(from=1, to=10, length=4)
[1]  1  4  7 10
seq(1, 10,   , 4)
[1]  1  4  7 10

4.3 Repetición

Esta función siver para replicar valores que queremos.

#Repetir 4 veces el valor 1
rep(1, 4)
[1] 1 1 1 1

Tambien podemos usar secuencias con repeticiones.

#Repite 3 veces la secuencia 4:5
rep(4:5, 3)
[1] 4 5 4 5 4 5

Podemos repetir elementos de la secuencia.

#Repite cada elemento 2 veces
rep(1:4, each = 2)
[1] 1 1 2 2 3 3 4 4

Podemos repetir elementos de la secuencia y todo eso repetirlo las veces que queramos.

#Repite cada elemento 2 veces y todo 2 veces
rep(1:4, times=2, each=2)
 [1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4

4.4 Acceso a los elementos del vector

Para acceder un elemento del vector, usaremos “[ ]”. En R, el primer elemento es el número 1, el segundo, número 2 y asi los demas elementos.

#Acceder al elemento 1
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[1]
[1] 3
#Acceder al elemento 2
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[2]
[1] 4.5
#Acceder valores desde un punto a otro
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[3:5]
[1] 100.0  23.0  19.8
#Selección de solo 2 índices específicos
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[c(1,3)]
[1]   3 100

Si queremos descartar elementos del vector, sera usar “[-x]”.

#Eliminar el primer elemento
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[-1]
[1]   4.5 100.0  23.0  19.8   3.0
#Acceder valores desde un punto a otro
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[-2:-4]
[1]  3.0 19.8  3.0
#Selección de solo 2 índices específicos
v2 <- c(3, 4.5, 100, 23, 19.8, 3)
v2[-c(2,4)]
[1]   3.0 100.0  19.8   3.0

4.4.1 Algunas funciones extras

v2 <- c(3, 4.5, 100, 23, 19.8, 3)
# Longitud (tamaño) de un vector
length(v2)
[1] 6
# Último elemento del vector
v2[length(v2)]
[1] 3
# Vector en reversa
rev(v2)
[1]   3.0  19.8  23.0 100.0   4.5   3.0
# Elementos únicos del vector
unique(v2)
[1]   3.0   4.5 100.0  23.0  19.8

4.5 Agregar elementos o vectores a un vector

#Agregando un elemento a un vector
v3 <- c(4, 3, 5)
elemento <- 6
#Podemos actualizar v3 o crear una nuevo vector donde este agregado el elemento
v3 <- c(v3, elemento)
v3
[1] 4 3 5 6
#Agregando vectores a un vector
v4 <- c(3, "Lima", 10.5)
vector_nuevo1 <- c(0:2)
vector_nuevo2 <- c("Cusco", "Trujillo")
#Podemos actualizar v3 o crear una nuevo vector donde esten agregados los nuevos vectores
v4 <- c(v4, vector_nuevo1, vector_nuevo2)
v4
[1] "3"        "Lima"     "10.5"     "0"        "1"        "2"        "Cusco"   
[8] "Trujillo"

4.6 Ordenamiento del vector

v5 <- c(20, 4, 100, 31, 57, 3)
# Ordena en orden creciente
sort(v5)
[1]   3   4  20  31  57 100
# Retorna los índices
order(v5)
[1] 6 2 1 4 5 3
# Ordenamiento usando los índices
v5[order(v5)]
[1]   3   4  20  31  57 100
# Índices ordenados del vector
rank(v5)
[1] 3 2 6 4 5 1
# Valor máximo
max(v5)
[1] 100
# Índice del máximo
which.max(v5)
[1] 3
# Máximo usando el índice
v5[which.max(v5)]
[1] 100
# Valor mínimo
min(v5)
[1] 3
# Índice del valor mínimo
which.min(v5)
[1] 6

4.7 Aritmética de vectores

Usamos las opereciones basicas, presentadas en anteriores capítulos, pero con vectores.

Ejemplos:

v6 <- c(34, 10, 4, 21, 12)
#Multiplicación
100*v6
[1] 3400 1000  400 2100 1200
#Suma
200+v6
[1] 234 210 204 221 212

Cuando hay 2 vectores, se realiza término a término si tienen igual longitud

v7 <- c(2, 4, 6, 8, 10)
v8 <- c(1, 3, 5, 7, 11)
v7+v8
[1]  3  7 11 15 21
v7-v8
[1]  1  1  1  1 -1
v7*v8
[1]   2  12  30  56 110
v7/v8
[1] 2.0000000 1.3333333 1.2000000 1.1428571 0.9090909
v7**v8
[1]            2           64         7776      2097152 100000000000

OBS: Si no son del mismo tamaño, el más corto se “repite”

v9 <- c(1, 2, 3)
v10 <- c(10, 20, 30, 40, 50)
v11 <- v9+v10
Warning in v9 + v10: longitud de objeto mayor no es múltiplo de la longitud de
uno menor
v11
[1] 11 22 33 41 52