L’emplacement d’un élément dans une matrice est en général donné par le numéro de sa ligne et de sa colonne. Ainsi, pour sélectionner l’élément (i, j)
de la matrice m
, il faut écrire :
m[i,j]
Il est rare que l’on ait besoin de ne sélectionner qu’un seul élément dans une matrice. Usuellement, on sélectionne une ou plusieurs lignes et/ou une ou plusieurs colonnes. Voyons les différents cas rencontrés en pratique.
Sélection par indice
Le premier cas est la sélection par des entiers positifs.
m[i,]
Attention, cela retourne la ligne i
sous la forme d’un vecteur. Pour conserver la structure de matrice il faut utiliser l’argument drop
:
m[i,,drop=F]
donne la ligne i
sous la forme d’une matrice uniligne et non plus d’un vecteur, ce qui permet de conserver le nom de la ligne.
m[,c(2,2,1)]
donne deux fois la seconde, puis la première colonne : c’est donc une matrice à trois colonnes.
Tout comme avec les vecteurs, il est tout à fait possible de sélectionner avec des entiers négatifs :
m[-1,] # matrice m sans sa première ligne
m[1:2,-1] # 2 premières lignes de m privée de sa 1ère colonne
Sélection par condition
Vous pouvez également sélectionner selon une condition, définie soit sur les lignes, soit sur les colonnes, voire les deux en même temps !
Soit la matrice X
suivante :
X <- matrix(1:12,nrow=3,ncol=4)
X
# [,1] [,2] [,3] [,4]
# [1,] 1 4 7 10
# [2,] 2 5 8 11
# [3,] 3 6 9 12
L’instruction suivante retourne uniquement les colonnes de X
pour lesquelles la valeur sur la première ligne est strictement supérieure à 2 :
X[,X[1,]>2]
# [,1] [,2] [,3]
# [1,] 4 7 10
# [2,] 5 8 11
# [3,] 6 9 12
C’est donc une matrice, alors que l’instruction suivante retourne un vecteur contenant les valeurs de X
supérieures à 2 :
X[X>2]
# [1] 3 4 5 6 7 8 9 10 11 12
L’instruction suivante quant à elle remplace les valeurs de X
inférieures à 5 par des NA
X[X<5] <- NA
# [,1] [,2] [,3] [,4]
# [1,] NA NA 7 10
# [2,] NA 5 8 11
# [3,] NA 6 9 12
En résumé
Il est possible de sélectionner au sein d’une matrice selon :
un entier positif ou un vecteur d’entiers positifs : pour pouvoir sélectionner en particulier une ligne ou une colonne. Un cas particulier est de spécifier un numéro de ligne et de colonne dans le cas où vous souhaiteriez ne sélectionner qu’un seul élément bien identifié ;
un entier négatif ou un vecteur d’entiers négatifs : pour exclure du résultat final les éléments dont les indices sont représentés par les entiers ;
une condition : définie soit sur les lignes, soit sur les colonnes, voire les deux en même temps.
Maintenant que vous savez comment sélectionner au sein d'une matrice, nous allons aller plus loin avec la sélection dans une liste.