Une matrice en R est un tableau à deux dimensions (lignes et colonnes) où tous les éléments sont obligatoirement du même type (généralement numérique).
C'est la structure fondamentale utilisée pour l'algèbre linéaire, les réseaux de neurones, la résolution de systèmes d'équations et le traitement d'images.
1. Création d'une matrice avec matrix()#
Pour concevoir une matrice, on fournit un vecteur de données ainsi que le nombre de lignes (nrow) ou de colonnes (ncol) :
# Par défaut : remplissage colonne par colonne (byrow = FALSE)
M1 <- matrix(1:6, nrow = 2, ncol = 3)
print(M1)
Sortie :
Pour remplir la matrice ligne par ligne, activez l'argument byrow = TRUE :
Sortie :
2. Dimensions et étiquettes (rownames, colnames)#
Pour connaître la taille d'une matrice :
Il est très pratique d'attribuer des noms aux lignes et colonnes :
rownames(M2) <- c("Ligne_1", "Ligne_2")
colnames(M2) <- c("Vente_A", "Vente_B", "Vente_C")
print(M2)
3. L'indexation à deux dimensions : [ligne, colonne]#
L'accès aux éléments d'une matrice se fait toujours sous la forme [i, j] où \(i\) désigne la ligne et \(j\) la colonne :
# Élément précis à la 2e ligne, 3e colonne
M2[2, 3] # [1] 6
# Extraire une ligne entière (en laissant l'indice de colonne vide)
M2[1, ] # Vente_A: 1, Vente_B: 2, Vente_C: 3
# Extraire une colonne entière
M2[, "Vente_B"] # Ligne_1: 2, Ligne_2: 5
# Extraire un sous-bloc 2x2
M2[1:2, 1:2]
4. Combiner des données : rbind() et cbind()#
rbind()(Row Bind) : Empile deux matrices ou vecteurs par les lignes (l'un au-dessus de l'autre).cbind()(Column Bind) : Accole deux matrices ou vecteurs côte à côte par les colonnes.
v1 <- c(10, 20, 30)
v2 <- c(40, 50, 60)
mat_lignes <- rbind(v1, v2) # Matrice 2 x 3
mat_colonnes <- cbind(v1, v2) # Matrice 3 x 2
5. Algèbre linéaire et opérations matricielles#
R distingue rigoureusement le calcul terme à terme du produit matriciel de l'algèbre linéaire :
| Opération | Opérateur R | Description |
|---|---|---|
| Produit terme à terme | A * B |
Multiplie chaque élément \(A_{ij}\) par \(B_{ij}\) (mêmes dimensions requises). |
| Produit matriciel | A %*% B |
Véritable produit matriciel mathématique (lignes \(\times\) colonnes). |
| Transposée | t(A) |
Intervertit les lignes et les colonnes. |
| Inversion | solve(A) |
Calcule la matrice inverse \(A^{-1}\) (\(A\) doit être carrée et inversible). |
| Diagonale | diag(A) |
Extrait le vecteur de la diagonale principale. |
A <- matrix(c(2, 1, 5, 3), nrow = 2) # Matrice 2x2
B <- matrix(c(1, 2, 3, 4), nrow = 2)
# Vrai produit matriciel
produit <- A %*% B
# Inversion de A
A_inv <- solve(A)
A %*% A_inv # Donne la matrice identité I
Mise en pratique#
- Créez une matrice \(3 \times 3\) nommée
matcontenant les entiers de 1 à 9 remplis ligne par ligne. - Calculez la transposée de cette matrice avec
t(mat). - Extrayez la deuxième colonne complète de
mat. - Créez une matrice identité de taille 3 grâce à la fonction
diag(3).
Commentaires