Chapter 4 Matrices
En R, una matriz es un tipo de dato bidimensional que se utiliza para almacenar elementos de datos del mismo tiposí solo del mismo tipo organizados en filas y columnas. Las matrices son una extensión de los vectores y pueden ser útiles para realizar operaciones matemáticas y estadísticas.
4.1 Creación de matrices
Para crear una matriz podemos usar la función matrix()
. Dicha función requiere de, al menos, un vector e indicar al menos una dimensión.
Ejemplo:
y <- matrix(c(1,5,8,-4), nrow=2, ncol=2) #nrow: indica el número de renglones & ncol: indica el número de columnas.
y
## [,1] [,2]
## [1,] 1 8
## [2,] 5 -4
Por default, la matriz va agregando los datos por columnas.
## [,1] [,2]
## [1,] TRUE TRUE
## [2,] FALSE FALSE
## [3,] TRUE TRUE
## [4,] FALSE FALSE
¿Por qué sólo es necesario indicar una dimensión (renglones)?
También se puede indicar que se cambien el orden de llenado de la matriz, es decir, en lugar de que lo haga por columnas, lo haga por renglones.
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
4.2 Dimensiones de un matriz
La dimensión de una matriz es el número de renglones y de columnas respectivamente. Se puede obtener usando la función dim()
de dimensión.
NOTA
dim()
no se puede emplear en elementos unidemsionales (Ej: vectores)
## [1] 2 2
## [1] 4 2
Así una matriz se distingue de un vector ya que tiene, además de renglones, columnas.
## Elementos de una matriz
Para acceder a elementos de un objeto con indices (componentes que tienen una posición asignada), debemos usar corchetes []
. En el caso de la matriz se debe indicar la posición de ambas dimensiones [renglón,columna]
.
Ejemplo: En este caso se desea seleccionar el elemento del primer renglón, segunda columna.
## [1] 8
Ejemplo: En este caso se quiere seleccionar todos los elementos del primer renglón.
## [1] 1 8
Ejemplo: En este caso se quiere seleccionar todos los elementos de la segunda columna.
## [1] 8 -4
4.3 Creación de matriz “vacia”
Una forma mucho menos eficiente de definir una matriz es declarando una matriz sin elementos (matriz vacía) y después llenándolos de forma explícita asignando un valor distinto a cada posición.
## [,1] [,2]
## [1,] "Esta" "una"
## [2,] "es" "matriz"
4.4 Operaciones rbind y cbind en R para Matrices
En R, las funciones rbind()
y cbind()
se utilizan para unir matrices por renglones y columnas, respectivamente. Además, la función t()
se utiliza para transponer una matriz.
4.5 Uso de rbind()
para unir matrices por renglones
La función rbind()
se utiliza para unir matrices por renglones. Por ejemplo, considera las siguientes dos matrices:
# Matrices de ejemplo
matriz1 <- matrix(1:6, nrow = 2)
matriz2 <- matrix(7:12, nrow = 2)
# Unir matrices por renglones
matriz_unida <- rbind(matriz1, matriz2)
matriz_unida
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
## [3,] 7 9 11
## [4,] 8 10 12
4.6 Uso de cbind() para unir matrices por columnas
La función cbind() se utiliza para unir matrices por columnas. A continuación, se muestra un ejemplo de cómo unir dos matrices por columnas:
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 3 5 7 9 11
## [2,] 2 4 6 8 10 12
Ejercicio
¿Cómo se llenaría una matriz vacia a partir de vectores?
¿El vector tendría que tener la misma longitud que la columna o el renglón de la matriz?
¿Qué pasaría si la longitud del vector es diferente a la columna o renglón de la matriz?
¿Cómo podrías emplear cbind()
& rbind()
?`
4.7 Operaciones con matrices
4.7.2 Suma de dos matrices
## [,1] [,2] [,3]
## [1,] 2 4 6
## [2,] 8 10 12
## [,1] [,2] [,3]
## [1,] 3 6 9
## [2,] 7 10 13
Para sumar matrices deben tener las mismas dimensiones
## [1] 2 3
## [1] 2 3
## [1] TRUE TRUE
4.7.3 Multiplicación de matrices
Se utiliza el operador %*%
. Sí. Son tres caracteres. E incluyen dos %
.
No hay espacios y es un sólo operador .
## [,1] [,2]
## [1,] 2 5
## [2,] 3 6
## [3,] 4 7
## [,1] [,2]
## [1,] 20 38
## [2,] 47 92
¿Recuerdas cuál es el criterio para calcular el producto de matrices? ¿Recuerdas cómo se multiplican dos matrices?
4.8 Uso de la función t()
para transponer una matriz
La función t()
se utiliza para transponer una matriz, es decir, intercambiar renglones por columnas y viceversa. Veamos un ejemplo:
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
## [4,] 7 8
## [5,] 9 10
## [6,] 11 12
4.9 Seleccionar elementos de matrices
Para seleccionar elementos de matrices se hace de forma análoga a vectores, es decir, se utiliza el operador []
. Sólo que esta vez hay que indicar tanto los renglones como la columna en ese orden
## [1] 6
## [1] 7
4.10 Nombres a renglones y columnas
Al igual que con vectores le podemos poner nombres tanto a renglones como a columnas para ello utilizamos rownames()
y colnames()
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## A B C
## e 1 2 3
## f 4 5 6
## [1] 3
## [1] TRUE
4.10.1 Ejercicios
Genera dos matrices aleatorias de tamaño \(3 \times 3\) y luego suma ambas matrices.
Crea dos matrices aleatorias, una de tamaño \(2\times 3\) y otra de tamaño \(3 \times 4\). Luego, calcula su producto matricial.
Crea una matriz aleatoria de tamaño \(4\times 3\) y encuentra su matriz transpuesta.
Genera una matriz cuadrada aleatoria de tamaño \(4\times 4\) y calcula su determinante.
Crea una matriz cuadrada aleatoria de tamaño \(3\times 3\) y encuentra su inversa.
Genera una matriz aleatoria de tamaño \(5 \times 5\) y extrae el tercer renglón y la segunda columna.
Crea una matriz diagonal aleatoria de tamaño \(4 \times 4\) y encuentra sus elementos diagonales.
Define una matriz de coeficientes \(\mathcal A\) y un vector de términos constantes b. Luego, resuelve el sistema de ecuaciones lineales \(\mathcal Ax = b\).
Genera una matriz aleatoria de tamaño \(3\times 3\) y multiplica cada uno de sus elementos por un escalar, por ejemplo, 2.
Crea una matriz simétrica aleatoria de tamaño 4x4 y verifica si es simétrica.
Comparación de Expresión Génica entre Condiciones
Descripción: Supongamos que tienes una matriz de expresión génica con 6 genes y 4 condiciones experimentales.
- Crea una matriz llamada
expresion_genica
con 6 genes y 4 condiciones (rellena con datos aleatorios). - Asigna nombres de genes a las filas y nombres de condiciones a las columnas.
- Calcula el promedio de expresión génica para cada gen.
- Red de interacciones proteína-proteína
Descripción: Modela una matriz de interacciones entre proteínas donde 1 indica interacción y 0 indica no interacción.
- Crea una matriz interacciones de 5x5 con valores binarios.
- Asigna nombres de proteínas a las filas y columnas.
- Encuentra cuántas interacciones tiene cada proteína (suma de cada fila).
- Variación de concentraciones de metabolitos
Descripción: Supongamos que tienes datos de concentraciones de 4 metabolitos en 3 tipos de tejidos diferentes.
- Crea una matriz concentraciones de \(4 \times 3\) con datos aleatorios.
- Asigna nombres de metabolitos a las filas y tipos de tejidos a las columnas.
- Normaliza las concentraciones para cada metabolito (dividiendo por el máximo valor de cada fila).
- Análisis de tasa de crecimiento bacteriano
Descripción: Modela una matriz con las tasas de crecimiento de 5 cepas bacterianas en 4 medios de cultivo diferentes.
- Crea una matriz crecimiento de 5x4 con datos aleatorios.
- Asigna nombres de cepas bacterianas a las filas y nombres de medios de cultivo a las columnas.
- Calcula la media y la desviación estándar de la tasa de crecimiento para cada medio de cultivo.
- Matriz de distancias genéticas
Descripción: Supongamos que tienes una matriz de distancias genéticas entre 6 especies.
- Crea una matriz distancias de 6x6 con valores aleatorios.
- Asigna nombres de especies a las filas y columnas.
- Encuentra la especie más cercana y más lejana para cada especie (índices de los mínimos y máximos valores en cada fila, excluyendo la diagonal).
4.10.2 Ejercicios avanzados
- Ejercicio 1: Transformaciones de Matrices
- Crea una matriz de 5x5 con números aleatorios entre 1 y 100.
- Encuentra la transpuesta de la matriz.
- Calcula la inversa de la matriz original (asegúrate de que la matriz sea invertible).
- Multiplica la matriz original por su inversa y verifica si el resultado es la matriz identidad.
- Ejercicio 4: eigenvalores y eigenvectores
- Crea una matriz simétrica de 5x5 con números aleatorios entre 1 y 10.
- Calcula los eigenvalores y eigenvectores de la matriz. Verifica la propiedad de los autovalores y autovectores: \(\mathcal A⋅v=λ⋅v\)