2.1 Les vecteurs

Imaginons maintenant que nous avons interrogé dix personnes au hasard dans la rue et que nous avons relevé pour chacune d’elle sa taille (en centimètre), son nom et son niveau d’étude.

Un ensemble de données de même nature constituent pour R un vecteur (en anglais vector) et se construit à l’aide de fonction nommée c.

Vecteur de type numérique

 [1] 167 192 173 174 172 167 171 185 163 170
 num [1:10] 167 192 173 174 172 167 171 185 163 170

Vecteur de type caractère

 [1] "Benjamin" "Hugo"     "Emma"     "Alex"     "Tom"      "Axel"    
 [7] "Alice"    "Martin"   "Robin"    "Enzo"    
 chr [1:10] "Benjamin" "Hugo" "Emma" "Alex" "Tom" "Axel" "Alice" ...

Voici un autre vecteur de type caractère

Vecteur de type logique

Supposons que vous voulez savoir si un individu est fumeur ou pas. Puisqu’il s’agit d’un caractère binaire (vrai, faux), on peut utiliser un vecteur logique :

 [1] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 logi [1:10] FALSE FALSE TRUE FALSE FALSE TRUE ...

Opérateurs logiques

Opérateur logique Signification
& et
| ou
! négation

Voici une illustartion:

[1] FALSE  TRUE FALSE
[1] FALSE  TRUE  TRUE
[1]  TRUE FALSE  TRUE

Remaque: On peut très bien appliquer des opérations arithmétiques sur un objet logique. Dans ce cas, R transforme les FALSE en 0 et les TRUE en 1. Voici un exemple

 [1] 0 0 1 0 0 1 0 0 0 1

Opérateurs de comparaison

Opérateur de comparaison Signification
== égal à
!= différent de
> strictement supérieur à
< strictement inférieur à
>= supérieur ou égal à
<= inférieur ou égal à

Voici une illustartion:

[1]  TRUE FALSE FALSE  TRUE
[1] FALSE  TRUE  TRUE FALSE
[1] FALSE FALSE  TRUE FALSE
[1]  TRUE  TRUE FALSE  TRUE

Indexation

On peut accéder à un élément particulier du vecteur en faisant suivre le nom du vecteur de crochets contenant le numéro de l’élément désiré. Cette opération s’appelle l’indexation. Par exemple

[1] "Bac"
[1] "Bac" "DEA"
[1] "Bac+2"    "Master"   "Bac"      "Bac"      "Doctorat" "Doctorat"
[7] "Bac"      "Master"  

Modifier les éléments d’un vecteur

On peut aussi modifier un élement particulier du vecteur par indexation. Par exemple

 [1] "Bac+2"    "DEA"      "Master"   "Bac"      "Bac"      "DEA"     
 [7] "Doctorat" "Doctorat" "Bac"      "Master"  

Voici un autre exemple

 [1] "Bac+2"    "Bac"      "Master"   "Bac"      "Bac"      "Master"  
 [7] "Doctorat" "Doctorat" "Bac"      "Master"  

Indexation logique

On peut aussi accéder à des éléments d’un vecteur en faisant suivre le nom du vecteur de crochets contenant un vecteur logique. Cette opération s’appelle l’indexation logique.

Par exemple, supposons que l’on souhaite savoir le nom des individus qui fument. Nous pouvons effectuer ce genre de tâche en tapant simplement

[1] "Emma" "Axel" "Enzo"

Voici d’autres exemples d’utilisation de l’indexation logique:

[1] "Hugo"   "Emma"   "Alex"   "Tom"    "Martin"
[1] 5
[1] "Benjamin" "Emma"     "Axel"     "Alice"    "Martin"   "Enzo"    
[1] "Emma" "Alex" "Tom" 
[1] "Hugo"   "Alex"   "Tom"    "Martin"

Une autre possibilité pour faire les indexations logique est d’utliser la fonction subset (si on n’aime pas les crochets !)

[1] "Hugo"   "Alex"   "Tom"    "Martin"

R est un langage vectoriel

On peut effectuer des opérations arithmétiques simples directement sur des vecteurs

[1] 10.0  8.5 10.0
[1]  256.00  166.38 1296.00
[1] 18.384  9.774 11.139
 [1] 5.1180 5.2575 5.1533 5.1591 5.1475 5.1180 5.1417 5.2204 5.0938 5.1358
 [1] 3.3665e+72 2.4240e+83 1.3581e+75 3.6918e+75 4.9963e+74 3.3665e+72
 [7] 1.8380e+74 2.2104e+80 6.1660e+70 6.7618e+73
 [1] 27889 36864 29929 30276 29584 27889 29241 34225 26569 28900

L’exemple suivant calcule l’indice de masse corporelle à partir de la taille et du poids

 [1] 30.837 20.074 27.732 16.515 26.366 23.665 22.571 14.901 18.819 19.031

Règle de recyclage

Si les deux objets intervenant dans l’opération ne sont pas de mêmes tailles, la règle de recyclage s’applique. R recycle l’objet le plus court assez de fois pour arriver à un objet de longueur égale à l’objet le plus long. Voici des exemples:

 [1] 187 212 193 194 192 187 191 205 183 190
 [1] 167 212 173 194 172 187 171 205 163 190

Si la longueur du vecteur le plus long n’est pas un multiple du plus court, un avertissement est donné:

Warning in tailles + c(0, 20, 1): longer object length is not a multiple of
shorter object length
 [1] 167 212 174 174 192 168 171 205 164 170

Valeur manquante : NA

Imaginons que la deuxième personne interrogée n’ait pas voulu nous répondre. Nous avons alors dans notre vecteur une valeur manquante. Celle-ci est symbolisée dans R par le code NA (not available)

 [1] 167  NA 173 174 172 167 171 185 163 170

Attention, a ne pas confondre : NA n’est pas la même chose que NaN qui signifie plutôt “Not a Number”.

[1] NaN

Combiner des vecteurs

Dans le cas où nous interrogeant 10 autres personnes, on peut les ajouter à ‘tailles’

 [1] 167 192 173 174 172 167 171 185 163 170 126 177 159 143 161 180 169
[18] 159 185 160

On peut remarquer la présence de nombres entre crochets au début de chaque ligne. Ces nombres indiquent la position du premier élément de la ligne dans notre vecteur. Ainsi, 159 en début de deuxième ligne est le 18 élément du vecteur.

Voici un autre exmple

 [1] 167 192 173 174 172 167 171 185 163 170 126 177 159 143 161 180 169 159 185
[20] 160

Rappelons-nous que tous les éléments d’un vecteur doivent être du même type. Que se passe-t-il si nous combinons des objets de type différent ?

 [1] "167" "192" "173" "174" "172" "167" "171" "185" "163" "170" "Ben"
 [1] 167 192 173 174 172 167 171 185 163 170   1
[1] "Ben"  "TRUE"