Un vector es la estructura de datos más sencilla en R. Un vector es una colección de uno o más datos del mismo tipo.
La definicion de un vector de hace de la siguiente forma:
x <- c(10, 9, 8, 7)
x
## [1] 10 9 8 7
Podemos acceder a un solo elemento del vector o a un subconjunto de este de la siguiente manera:
y <- c(10, 9, 8, 7)
y[2]
## [1] 9
y[2:4]
## [1] 9 8 7
Podemos saber de que tipo es un vector con la funcion class()
nombres <- c('Diego', 'Joel', 'Jonathan', 'ivan', 'Daniel')
nombres
## [1] "Diego" "Joel" "Jonathan" "ivan" "Daniel"
class(nombres)
## [1] "character"
Una matriz en R igual que en otros lenguajes es un conjunto de elementos del mismo tipo (numérico, carácter, lógico, etc) ordenados en filas y columnas. Las matrices en R se construyen con la función matrix() como se muestra a continuación.
m <- matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), nrow = 2, byrow = TRUE)
m
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 6 7 8 9 10
Como podemos notar, la función matrix() presenta 3 argumentos principales:
data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) indica que se genere un vector con estos valores (en este caso los numeros del 1 al 10).
nrow = 2 Indica que van a formarse 2 filas con los valores anteriores.
byrow = TRUE se refiere a que esos números se van a incorporar a la matriz de izquierda a derecha y de arriba a abajo.
Vemos qué si ponemos byrow = FALSE la matriz se ha rellenado con los datos de arriba a abajo y de izquierda a derecha.
n <- matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), nrow = 2, byrow = FALSE)
n
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Como tenemos 10 números hemos decidido generar tantas filas y columnas para que esos 10 números estuvieran bien repartidos (2×5) ¿Qué pasa si ponemos un número de filas que no sea múltiplo de 10, por ejemplo 3?
o <- matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), nrow = 3, byrow = TRUE)
## Warning in matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), nrow = 3, byrow =
## TRUE): la longitud de los datos [10] no es un submúltiplo o múltiplo del número
## de filas [3] en la matriz
Nos sale un mensaje de advertencia indicándonos precisamente eso, que el 3 no es un múltiplo o submúltiplo de 10, por lo tanto los campos faltantes son llenados automaticamente.
Usamos la funcion colnames() para agregar nombre a las columnas.
Usamos la funcion rownames() para agregar nombre a las filas.
p <- matrix(data = c(1, 2, 3, 4, 5, 9, 10, 8, 9, 10), nrow = 5, byrow = FALSE)
colnames(p) <- c("Id", "Calif")
rownames(p) <- c("Diego", "Jonathan", "Joel", "Javier", "Miguel")
p
## Id Calif
## Diego 1 9
## Jonathan 2 10
## Joel 3 8
## Javier 4 9
## Miguel 5 10