Curso
Las matrices son objetos cuyas entradas se organizan en una estructura bidimensional, generalmente con elementos numéricos para realizar distintos cálculos.
Por ejemplo, fíjate en la matriz siguiente.
[,1] [,2] [,3]
[1,] 5 6 7
[2,] 8 9 10
[3,] 11 12 13
La matriz anterior tiene 3 filas y 3 columnas.
En R, una matriz se puede crear con "matrix()".
La sintaxis de una matriz en R es la siguiente:
matrix(value, nrow, ncol, byrow, dimnames)
Los parámetros anteriores se definen así:
- value: especifica el vector de entrada; cada valor del vector será un elemento de la matriz.
- nrow: indica el número de filas de la matriz.
- ncol: indica el número de columnas de la matriz.
- byrow: valor booleano TRUE o FALSE. Si es TRUE, los elementos se rellenan por filas; si es FALSE, se rellenan por columnas.
- dimnames: permite dar nombre a las filas y columnas de la matriz.
Veamos un ejemplo donde "mat" es el nombre de una matriz cuyo vector de entrada en c contiene los valores 8, 4, 5, 6, 7, 9. También se especifica el número de filas, es decir, "nrow" igual a 2, y "ncol" igual a 3, lo que da una matriz de dimensión 2 × 3. Además, los elementos se rellenan por filas, es decir, el vector de entrada se vuelca fila a fila.
mat = matrix(c(8,4,5,6,7,9),nrow = 2, ncol = 3,byrow = TRUE)
print(mat)
La salida del código anterior muestra tres columnas y dos filas, con los elementos rellenados por filas.
[,1] [,2] [,3]
[1,] 8 4 5
[2,] 6 7 9
Nombrar filas y columnas
Creemos una matriz con los elementos del 1 al 9 y 3 filas. Además, asignaremos nombres a filas y columnas con los vectores que van de r1 a r3 y de c1 a c3.
mat <- matrix(1:9, nrow = 3,dimnames = list(c("r1","r2","r3"), c("c1","c2","c3")))
mat
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
La salida anterior muestra que los elementos del 1 al 9 se han rellenado por columnas. También se observan las etiquetas de filas (r1 a r3) y columnas (c1 a c3).
Acceder a elementos de una matriz
La matriz siguiente se llama "mat" y tiene 3 filas y 3 columnas.
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
Para acceder a elementos individuales, utiliza el nombre de la matriz seguido de corchetes con los índices de fila y columna.
- Para acceder al elemento 5 de la matriz:
mat[2,2] - Para acceder al elemento 6 de la matriz:
mat[3,2] - Para acceder a toda la primera columna, es decir, [1 2 3]:
mat[,1] - Para acceder a toda la segunda fila, es decir, [2 5 8]:
mat[2,]
Operaciones con matrices
Suma y resta de matrices
Condición: para sumar o restar matrices, deben tener la misma dimensión; es decir, el mismo número de filas y columnas. Por ejemplo:
Las matrices mat1 y mat2 de abajo son de 3 × 3; el número de filas y columnas coincide en ambas.
mat1 <- matrix(c(5,10,15,20,25,30,35,40,45), nrow = 3)
print(mat1)
mat2 <- matrix(c(50,55,60,65,70,75,80,85,90), nrow = 3)
print(mat2)
[,1] [,2] [,3]
[1,] 5 20 35
[2,] 10 25 40
[3,] 15 30 45
[,1] [,2] [,3]
[1,] 50 65 80
[2,] 55 70 85
[3,] 60 75 90
Arriba se imprimen las matrices, con las entradas rellenadas por columnas.
add_output <- mat1 + mat2
cat("Addition","\n")
print(add_output)
sub_output <- mat1 - mat2
cat("Subtraction","\n")
print(sub_output)
Addition
[,1] [,2] [,3]
[1,] 55 85 115
[2,] 65 95 125
[3,] 75 105 135
Subtraction
[,1] [,2] [,3]
[1,] -45 -45 -45
[2,] -45 -45 -45
[3,] -45 -45 -45
En la salida de la suma y la resta, cada elemento de mat1 se suma o se resta con el elemento correspondiente de mat2. Por ejemplo, en la suma, la entrada de la fila 1 y columna 1 (5 en mat1) se suma con la de la fila 1 y columna 1 en mat2 (50) para obtener 55. Lo mismo se aplica al resto de entradas tanto en la suma como en la resta.
Multiplicación y división de matrices
Condición: para la multiplicación y la división elemento a elemento, el número de filas y columnas debe coincidir; es decir, las dimensiones han de ser iguales.
Multiplicación de matrices
Veamos un ejemplo con dos matrices llamadas mat1 y mat2, ambas de 3 filas y 2 columnas. Tienen seis elementos rellenados por columnas; cada matriz es de dimensión 3 × 2.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 * mat2
print('------------------')
cat("Multiplication","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
-----------------
Multiplication
[,1] [,2]
[1,] 28 160
[2,] 64 220
[3,] 108 288
La salida muestra la multiplicación elemento a elemento entre mat1 y mat2. Por ejemplo, "mat1[1][1]" (2) se multiplica por "mat2[1][1]" (14) para obtener 28. El mismo proceso se aplica a todos los elementos; por último, "mat1[3][2]" (12) por "mat2[3][2]" (24) da 288.
División de matrices
Veamos ahora la división elemento a elemento con las mismas dimensiones (3 filas y 2 columnas).
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 / mat2
print('--------------')
cat("Division","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
--------------
Division
[,1] [,2]
[1,] 0.1428571 0.4000000
[2,] 0.2500000 0.4545455
[3,] 0.3333333 0.5000000
La salida muestra la división elemento a elemento entre mat1 y mat2. Por ejemplo, "mat1[1][1]" (2) se divide entre "mat2[1][1]" (14) y da 0.1428571. Del mismo modo, "mat1[3][2]" (12) entre "mat2[3][2]" (24) da 0.5000000.
¡Enhorabuena!
¡Has llegado al final de este tutorial!
En este tutorial has aprendido todo sobre las matrices en R: cómo nombrar filas y columnas, cómo acceder a elementos y cómo realizar operaciones como suma, resta, multiplicación y división.
Si quieres seguir aprendiendo R, apúntate al curso Introduction to R de DataCamp.
