R Vector
Los vectores son el tipo de datos más básico en R.
Hay 6 tipos de vectores atómicos: lógico (logical), entero (integer), doble (double), carácter (character), complejo (complex) y crudo (raw).
Crear vectores
A continuación creamos vectores de un solo elemento, que pueden ser de cualquiera de los 6 tipos anteriores:
Ejemplo
print("ejemplo");
# Vector atómico doble
print(12.5)
# Vector atómico entero
print(23L)
# Vector atómico lógico
print(TRUE)
# Vector atómico complejo
print(2+3i)
# Vector atómico crudo
print(charToRaw('hello'))
El resultado de ejecutar el código anterior es:
[1] "ejemplo" [1] 12.5 [1] 23 [1] TRUE [1] 2+3i [1] 68 65 6c 6c 6f
A continuación creamos vectores con múltiples elementos, usando entre los números:el operador de dos puntos:
Ejemplo
v <- 5:13
print(v)
# Crear una secuencia de 6.6 a 12.6
v <- 6.6:12.6
print(v)
# Si el último elemento no pertenece a la secuencia, se descarta
v <- 3.8:11.4
print(v)
El resultado de ejecutar el código anterior es:
[1] 5 6 7 8 9 10 11 12 13 [1] 6.6 7.6 8.6 9.6 10.6 11.6 12.6 [1] 3.8 4.8 5.8 6.8 7.8 8.8 9.8 10.8
También podemos usar el operador de secuenciaseq()para crear vectores.
En el siguiente ejemplo creamos un vector del 5 al 9 con incremento de 0.4:
print(seq(5, 9, by = 0.4))
El resultado de ejecutar el código anterior es:
[1] 5.0 5.4 5.8 6.2 6.6 7.0 7.4 7.8 8.2 8.6 9.0
La función c() puede convertir los elementos que no son de carácter a tipo carácter:
Ejemplo
s <- c('apple','red',5,TRUE)
print(s)
El resultado de ejecutar el código anterior es:
[1] "apple" "red" "5" "TRUE"
Acceder a los elementos de un vector
Se pueden usar corchetes para acceder a los elementos de un vector.[]Los índices comienzan en 1 (a diferencia de otros lenguajes de programación). Si el índice es negativo, se elimina el elemento en esa posición. También se pueden usar TRUE, FALSE o 0 y 1.
Ejemplo
t <- c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")
u <- t[c(2,3,6)]
print(u)
# Usar índice lógico, TRUE significa leer, FALSE no leer
v <- t[c(TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)]
print(v)
# El segundo y el quinto serán eliminados
x <- t[c(-2,-5)]
print(x)
# Usar índice 0/1, 1 significa leer, 0 no leer
y <- t[c(0,0,0,0,0,0,1)]
print(y)
El resultado de ejecutar el código anterior es:
[1] "Mon" "Tue" "Fri" [1] "Sun" "Fri" [1] "Sun" "Tue" "Wed" "Fri" "Sat" [1] "Sun"
Operaciones con vectores
Podemos realizar operaciones como suma, resta, multiplicación o división entre dos vectores de la misma longitud, y el resultado también se emite como vector.
Ejemplo
v1 <- c(3,1,4,5,0,12)
v2 <- c(5,11,9,8,1,22)
# Suma
add.result <- v1+v2
print(add.result)
# Resta
sub.result <- v1-v2
print(sub.result)
# Multiplicación
multi.result <- v1*v2
print(multi.result)
# División
divi.result <- v1/v2
print(divi.result)
El resultado de ejecutar el código anterior es:
[1] 8 12 13 13 1 34 [1] -2 -10 -5 -3 -1 -10 [1] 15 11 36 40 0 264 [1] 0.60000000 0.09090909 0.44444444 0.62500000 0.00000000 0.54545455
Reciclaje de vectores
Si dos vectores tienen longitudes diferentes, el más corto recicla sus elementos hasta igualar la longitud del vector más largo.
Ejemplo
v2 <- c(5,6)
# V2 se convierte en c(5,6,5,6,5,6)
add.result <- v1+v2
print(add.result)
sub.result <- v1-v2
print(sub.result)
El resultado de ejecutar el código anterior es:
[1] 6 14 12 11 5 18 [1] -4 2 2 -1 -5 6Ordenar vectores
Podemos usar la función sort() para ordenar vectores:
Ejemplo
# Ordenar
sort.result <- sort(v)
print(sort.result)
# El parámetro decreasing establecido en TRUE es descendente; por defecto FALSE es ascendente
revsort.result <- sort(v, decreasing = TRUE)
print(revsort.result)
# Ordenar el tipo de carácter
v <- c("Ejemplo","Google","Zhihu","Facebook")
sort.result <- sort(v)
print(sort.result)
# Descendente
revsort.result <- sort(v, decreasing = TRUE)
print(revsort.result)
El resultado de ejecutar el código anterior es:
[1] -7 0 2 5 6 11 21 111 [1] 111 21 11 6 5 2 0 -7 [1] "Facebook" "Google" "Ejemplo" "Zhihu" [1] "Zhihu" "Ejemplo" "Google" "Facebook"Otras extensiones