• 12 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/12/2020

Utilisez les matrices

Les matrices - équivalentes aux matrices en mathématiques - peuvent être vues comme des tableaux de valeurs, à double entrée. Une matrice est donc définie par son nombre de lignes et de colonnes. Ce sont des objets monotypes, c’est-à-dire de même type pour tous ses éléments. Chaque valeur de la matrice peut être repérée par son numéro de ligne et son numéro de colonne. Les deux attributs intrinsèques d’un objet R sont la longueur  length  , qui correspond ici au nombre total d’éléments de la matrice, et le mode  mode  , qui correspond ici au mode des éléments de cette matrice. Les matrices possèdent également l’attribut de dimension  dim  , qui retourne le nombre de lignes et le nombre de colonnes.

Création d’une matrice

Voici les principales façons de créer une matrice. La plus utilisée est la fonction  matrix  qui prend en arguments le vecteur d’éléments et les dimensions - nombre de lignes ou de colonnes - de la matrice. Par défaut, R range les valeurs dans une matrice par colonne. Pour ranger les éléments par ligne, on utilise l’argument  byrow  :

x <- matrix(c(1:6),nrow=2,ncol=3,byrow=TRUE)
x
# [,1] [,2] [,3]
# [1,] 1 2 3
# [2,] 4 5 6
y <- matrix(1:2,ncol=1)
y
# [,1]
# [1,] 1
# [2,] 2
z <- matrix(3:1,ncol=3)
z
# [,1] [,2] [,3]
# [1,] 3 2 1

Lorsque la longueur du vecteur est différente du nombre d’éléments de la matrice, R remplit toute la matrice. Si le vecteur est trop grand, il prend les premiers éléments, si le vecteur est trop petit, R le répète :

m <- matrix(1:4,nrow=3,ncol=3)
m
# [,1] [,2] [,3]
# [1,] 1 4 3
# [2,] 2 1 4
# [3,] 3 2 1

Il est possible de remplir une matrice d’un élément unique sans avoir à créer le vecteur des éléments :

un <- matrix(1,nrow=2,ncol=4)
un
# [,1] [,2] [,3] [,4]
# [1,] 1 1 1 1
# [2,] 1 1 1 1

Un vecteur n’est pas considéré par R comme une matrice. Il est cependant possible de transformer un vecteur en une matrice unicolonne avec la fonction  as.matrix   :

x <- seq(1,10,by=2)
x
# [1] 1 3 5 7 9
as.matrix(x)
# [,1]
# [1,] 1
# [2,] 3
# [3,] 5
# [4,] 7
# [5,] 9

Il est bien évidemment possible de créer une matrice de caractères :

matrix(c("A","B","C","A"),ncol=2)
# [,1] [,2]
# [1,] "A" "C"
# [2,] "B" "A"

Opérations entre matrices

Comme avec des matrices classiques, il est possible d’effectuer différentes opérations sur et avec des matrices. Considérons les deux matrices  m  et  n  suivantes :

m <- matrix(1:4,ncol=2)
m
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
n <- matrix(3:6,ncol=2,byrow=T)
n
# [,1] [,2]
# [1,] 3 4
# [2,] 5 6

Vous pouvez additionner deux matrices de même dimension :

m+n
# [,1] [,2]
# [1,] 4 7
# [2,] 7 10

Ou calculer le produit entre deux matrices, lorsque le nombre de lignes de la première est égal au nombre de colonnes de la deuxième.

m*n # produit élément par élément
# [,1] [,2]
# [1,] 3 12
# [2,] 10 24

Et vous pouvez y appliquer toute une série d’opérations mathématiques, qui vont s’effectuer élément par élément :

sin(m) # sinus élément par élément
exp(m) # exponentielle élément par élément
m^4 # puissance quatrième élément par élément

Le tableau suivant donne les principales fonctions utiles en algèbre linéaire que vous pouvez également utiliser :

Fonction

Description

X%*%Y

produit (matriciel) de matrices

t(X)

transposition d’une matrice

diag(5)

matrice identité d’ordre 5

diag(vec)

matrice diagonale avec les valeurs du vecteur  vec  dans la diagonale

crossprod(X, Y)

produit croisé (t(X)%*%Y)

det(X)

déterminant de la matrice X

svd(X)

décomposition en valeurs singulières

eigen(X)

diagonalisation d’une matrice

solve(X)

inversion de matrice

solve(A, b)

résolution de système linéaire

chol(Y)

décomposition de Cholesky

qr(Y)

décomposition QR

Autres fonctions utiles

Nous présentons dans ce paragraphe quelques fonctions utiles pour manipuler vos matrices :

  • Dimensions : dim(X), nrow(X), ncol(X) donnent respectivement la dimension, le nombre de lignes et de colonnes de X.

    X <- matrix(1:6,ncol=3)
    X
    # [,1] [,2] [,3]
    # [1,] 1 3 5
    # [2,] 2 4 6
    ncol(X)
    # [1] 3
    nrow(X)
    # [1] 2
    dim(X)
    # [1] 2 3

    Ces fonctions renvoient NULL si X est un vecteur.

  • Concaténation : par colonne avec la fonction  cbind  , par ligne avec la fonction  rbind  .

    cbind(c(1,2),c(3,4))
    # [,1] [,2]
    # [1,] 1 3
    # [2,] 2 4
  • La fonction  apply  permet d’appliquer une fonction choisie aux lignes (MARGIN=1) ou aux colonnes (MARGIN=2) de la matrice. Par exemple :

    apply(X,MARGIN=2,sum) # sommes par colonne
    # [1] 3 7 11
    apply(X,1,mean) # moyennes par ligne
    # [1] 3 4

En résumé

  • Les matrices sont des sortes de tableaux monotypes à deux dimensions où chaque élément est identifié par son numéro de ligne et son numéro de colonne.

  • Vous pouvez créer une matrice soit à partir d’un objet existant (vecteur notamment), soit en définissant directement les éléments via la fonction matrix.

  • Vous pouvez réaliser de nombreuses opérations d’algèbre linéaire via différents opérateurs ou fonctions.

  • Il existe plusieurs fonctions permettant d’accéder aux dimensions (nombre de lignes, nombre de colonnes, etc.) et/ou de concaténer des matrices.

Maintenant que nous savons comment créer une matrice, nous allons voir comment créer des listes.

Et si vous obteniez un diplôme OpenClassrooms ?
  • Formations jusqu’à 100 % financées
  • Date de début flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous
Exemple de certificat de réussite
Exemple de certificat de réussite