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

# Vector atómico de carácter
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

# Crear una secuencia del 5 al 13
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

# Los números y los valores lógicos se convertirán al tipo carácter
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

# Acceder a los elementos del vector usando índices
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

# Crear dos vectores
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

v1 <- c(1,8,7,5,0,12)
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 6

Ordenar vectores

Podemos usar la función sort() para ordenar vectores:

Ejemplo

v <- c(2,11,6,5,0,21, -7, 111)

# 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