La sélection au sein d’un vecteur s’opère avec l’opérateur de sélection [ ]
et un vecteur de sélection :
x[vecteurdeselection]
Le vecteur de sélection peut être un vecteur d’entiers positifs, d’entiers négatifs ou de logiques.
Sélection par position
La sélection la plus naturelle est la sélection par des vecteurs d’entiers positifs. Les entiers sont les indices des éléments à sélectionner et doivent être compris entre 1 et la longueur du vecteur considéré (obtenue via la fonction length
). La longueur du vecteur d’indices peut être quelconque :
x <- c(2,-1,15)
x[2] # donne le deuxième élément de x
# [1] -1
x[c(1,3)] # donne les premier et troisième éléments de x
# [1] 2 15
x[c(3,1,2,2,1)]
# [1] 15 2 -1 -1 2
Une autre méthode consiste à enlever les éléments du vecteur que l’on ne souhaite pas conserver : c’est la sélection par des vecteurs d’entiers négatifs. Le vecteur d’indices indique les indices des éléments à exclure du résultat final :
x[-2] # ne donne pas le deuxième élément de x
# [1] 2 15
Une autre façon de procéder consiste à sélectionner des éléments du vecteur en fonction de leur valeur ou d’autres éléments provenant d’autres objets R. Cela conduit à la sélection par des vecteurs de logiques.
Sélection par condition
Cette sélection permet l’extraction d’éléments particuliers que l’on sait caractériser par une périphrase ou par une condition logique : « l’élément de sexe M » ou « l’élément qui possède une valeur inférieure à 5 et (ou) supérieure ou égale à 12 ».
Prenons par exemple les éléments de x
qui sont positifs.
x[x>0]
# [1] 2 15
x[!(x<0)]
# [1] 2 15
Cependant, aucun élément n’est à la fois inférieur à 5 et supérieur à 12, la fonction retourne
alors l’ensemble vide avec integer(0)
:
x[(x<5) & (x>=12)]
# numeric(0)
On peut aussi sélectionner les valeurs d’un vecteur à partir des valeurs d’un autre vecteur de même longueur :
T <- c(23, 28, 24, 32)
O3 <- c(80, 102, 87, 124)
O3[T>25]
# [1] 102 124
En résumé
Il est possible de sélectionner au sein d’un vecteur selon :
un vecteur d’entiers positifs : dans ce cas, les entiers correspondent aux indices des éléments à sélectionner ;
un vecteur d’entiers négatifs : dans ce cas, les entiers correspondent aux indices des éléments à exclure du résultat final ;
une condition : dans ce cas, le résultat sera constitué de l’ensemble des éléments du vecteur initial qui satisfont cette condition.
Dans le prochain chapitre, nous verrons un peu plus en détails comment sélectionner un ou plusieurs éléments au sein d'une matrice.