Partie 2 Prise en main▲
L'installation du logiciel proprement dite n'est pas décrite ici, mais indiquée dans l'annexe AAnnexe A Installer R. On part donc du principe que vous avez sous la main un ordinateur avec une installation récente de R, quel que soit le système d'exploitation que vous utilisez (Linux, Mac OS X ou Windows).
L'invite de commandes▲
Une fois R lancé, vous obtenez une fenêtre appelée console. Celle-ci contient un petit texte de bienvenue ressemblant à peu près à ce qui suit :
R version 2.7.2 (2008-08-25)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
R est un logiciel libre livré sans AUCUNE GARANTIE.
Vous pouvez le redistribuer sous certaines conditions.
Tapez 'license()' ou 'licence()' pour plus de détails.
(...)
suivi d'une ligne commençant par le caractère > et sur laquelle devrait se trouver votre curseur. Cette ligne est appelée l'invite de commande (ou prompt en anglais). Elle signifie que R est disponible et en attente de votre prochaine commande.
Nous allons tout de suite lui fournir une première commande :
R>
2
+
3
La réponse de R ne se fait pas attendre :
[
1
]
5
Bien, nous savons désormais que R sait faire les additions à un chiffre(3). Nous pouvons désormais continuer avec d'autres opérations arithmétiques de base :
R>
8
-
12
[
1
]
-
4
R>
14
*
25
[
1
]
350
R>
-
3
/
10
[
1
]
-
0.3
Une petite astuce très utile lorsque vous tapez des commandes directement dans la console : en utilisant les flèches Haut et Bas du clavier, vous pouvez naviguer dans l'historique des commandes tapées précédemment, que vous pouvez alors facilement réexécuter ou modifier.
Lorsque l'on fournit à R une commande incomplète, celui-ci nous propose de la compléter en nous présentant une invite de commande spéciale utilisant le signe +. Imaginons par exemple, que nous avons malencontreusement tapé sur Entrée alors que nous souhaitions calculer 4
*
3
:
R>
4
*
+
On peut alors compléter la commande en saisissant simplement 3 :
R>
4
*
+
3
[
1
]
12
Pour des commandes plus complexes, il arrive parfois que l'on se retrouve coincé avec un invite + sans plus savoir comment compléter la saisie correctement. On peut alors annuler la commande en utilisant la touche Echap ou Esc sous Windows. Sous Linux on utilise le traditionnel Control + C.
À noter que les espaces autour des opérateurs n'ont pas d'importance lorsque l'on saisit les commandes dans R. Les trois commandes suivantes sont donc équivalentes, mais on privilégie en général la deuxième pour des raisons de lisibilité du code.
R>
10
+
2
R>
10
+
2
R>
10
+
2
Des objets▲
Objets simples▲
Faire des opérations arithmétiques, c'est bien, mais sans doute pas totalement suffisant. Notamment, on aimerait pouvoir réutiliser le résultat d'une opération sans avoir à le ressaisir ou à le copier/coller.
Comme tout langage de programmation, R permet de faire cela en utilisant des objets. Prenons tout de suite un exemple :
R>
x <-
2
Que signifie cette commande ? L'opérateur <- est appelé opérateur d'assignation. Il prend une valeur quelconque à droite et la place dans l'objet indiqué à gauche. La commande pourrait donc se lire mettre la valeur 2 dans l'objet nommé x.
On va ensuite pouvoir réutiliser cet objet dans d'autres calculs ou simplement afficher son contenu :
2.
3.
4.
R>
x +
3
[
1
]
5
R>
x
[
1
]
2
Par défaut, si on donne à R seulement le nom d'un objet, il va se débrouiller pour nous présenter son contenu d'une manière plus ou moins lisible.
On peut utiliser autant d'objets que l'on veut. Ceux-ci peuvent contenir des nombres, des chaînes de caractères (indiquées par des guillemets droits ") et bien d'autres choses encore :
2.
3.
4.
5.
6.
7.
8.
9.
R>
x <-
27
R>
y <-
10
R>
foo <-
x +
y
R>
foo
[
1
]
37
R>
x <-
"Hello"
R>
foo <-
x
R>
foo
[
1
]
"Hello"
Les noms d'objets peuvent contenir des lettres, des chiffres (mais ils ne peuvent pas commencer par un chiffre), les symboles . et _, et doivent commencer par une lettre. R fait la différence entre les majuscules et les minuscules, ce qui signifie que x et X sont deux objets différents. On évitera également d'utiliser des caractères accentués dans les noms d'objets, et comme les espaces ne sont pas autorisés on pourra les remplacer par un point ou un tiret bas.
Enfin, signalons que certains noms courts sont réservés par R pour son usage interne et doivent être évités. On citera notamment c, q, t, C, D, F, I, T, max, min…
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ètres. Nous avons donc une série de dix nombres que nous souhaiterions pouvoir réunir de manière à pouvoir travailler sur l'ensemble de nos mesures.
Un ensemble de données de même nature constituent pour R un vecteur (en anglais vector) et se construit à l'aide d'un opérateur nommé c(4). On l'utilise en lui donnant la liste de nos données, entre parenthèses, séparées par des virgules :
R>
tailles <-
c
(167
, 192
, 173
, 174
, 172
, 167
, 171
, 185
, 163
, 170
)
Ce faisant, nous avons créé un objet nommé tailles et comprenant l'ensemble de nos données, que nous pouvons afficher :
R>
tailles
[
1
]
167
192
173
174
172
167
171
185
163
170
Dans le cas où notre vecteur serait beaucoup plus grand et comporterait, par exemple 40 tailles, on aurait le résultat suivant :
R>
tailles
[
1
]
144
168
179
175
182
188
167
152
163
145
176
155
156
164
167
155
157
[
18
]
185
155
169
124
178
182
195
151
185
159
156
184
172
156
160
183
148
[
35
]
182
126
177
159
143
161
180
169
159
185
160
On a bien notre suite de quarante tailles, mais on peut remarquer la présence de nombres entre crochets au début de chaque ligne ([
1
]
, [
18
]
et [
35
]
). En fait ces nombres entre crochets indiquent la position du premier élément de la ligne dans notre vecteur. Ainsi, le 185
en début de deuxième ligne est le 18e élément du vecteur, tandis que le 182
de la troisième ligne est à la 35e position.
On en déduira d'ailleurs que lorsque l'on fait :
R>
2
[
1
]
2
R considère en fait le nombre 2
comme un vecteur à un seul élément.
On peut appliquer des opérations arithmétiques simples directement sur des vecteurs :
2.
3.
4.
5.
6.
7.
R>
tailles <-
c
(167
, 192
, 173
, 174
, 172
, 167
, 171
, 185
, 163
, 170
)
R>
tailles +
20
[
1
]
187
212
193
194
192
187
191
205
183
190
R>
tailles/
100
[
1
]
1.67
1.92
1.73
1.74
1.72
1.67
1.71
1.85
1.63
1.70
R>
tailles^
2
[
1
]
27889
36864
29929
30276
29584
27889
29241
34225
26569
28900
On peut aussi combiner des vecteurs entre eux. L'exemple suivant calcule l'indice de masse corporelle à partir de la taille et du poids :
2.
3.
4.
5.
6.
7.
R>
tailles <-
c
(167
, 192
, 173
, 174
, 172
, 167
, 171
, 185
, 163
, 170
)
R>
poids <-
c
(86
, 74
, 83
, 50
, 78
, 66
, 66
, 51
, 50
, 55
)
R>
tailles.m <-
tailles/
100
R>
imc <-
poids/
(tailles.m^
2
)
R>
imc
[
1
]
30.83653
20.07378
27.73230
16.51473
26.36560
23.66524
22.57105
[
8
]
14.90139
18.81892
19.03114
Quand on fait des opérations sur les vecteurs, il faut veiller à soit utiliser un vecteur et un chiffre (dans des opérations du type v *
2
ou v +
10
), soit à utiliser des vecteurs de même longueur (dans des opérations du type u +
v).
Si on utilise des vecteurs de longueurs différentes, on peut avoir quelques surprises(5).
On a vu jusque-là des vecteurs composés de nombres, mais on peut tout à fait créer des vecteurs composés de chaînes de caractères, représentant par exemple, les réponses à une question ouverte ou fermée :
R>
reponse <-
c
("Bac+2"
, "Bac"
, "CAP"
, "Bac"
, "Bac"
, "CAP"
, "BEP"
)
Enfin, notons que l'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é. Par exemple :
2.
3.
R>
reponse <-
c
("Bac+2"
, "Bac"
, "CAP"
, "Bac"
, "Bac"
, "CAP"
, "BEP"
)
R>
reponse[
2
]
[
1
]
"Bac"
Cette opération s'appelle l'indexation d'un vecteur. Il s'agit ici de sa forme la plus simple, mais il en existe d'autres, beaucoup plus complexes. L'indexation des vecteurs et des tableaux dans R est l'un des éléments particulièrement souples et puissants du langage (mais aussi l'un des plus délicats à comprendre et à maîtriser). Nous en reparlerons section 5.2Indexation.
Des fonctions▲
Nous savons désormais faire des opérations simples sur des nombres et des vecteurs, stocker ces données et résultats dans des objets pour les réutiliser par la suite.
Pour aller un peu plus loin, nous allons aborder, après les objets, l'autre concept de base de R, à savoir les fonctions. Une fonction se caractérise de la manière suivante :
- elle a un nom ;
- elle accepte des arguments (qui peuvent avoir un nom ou pas) ;
- elle retourne un résultat et peut effectuer une action comme dessiner un graphique, lire un fichier, etc.
En fait rien de bien nouveau, puisque nous avons déjà utilisé plusieurs fonctions jusqu'ici, dont la plus visible est la fonction c. Dans la ligne suivante :
R>
reponse <-
c
("Bac+2"
, "Bac"
, "CAP"
, "Bac"
, "Bac"
, "CAP"
, "BEP"
)
on fait appel à la fonction nommée c, on lui passe en arguments (entre parenthèses et séparées par des virgules) une série de chaînes de caractères, et elle retourne comme résultat un vecteur de chaînes de caractères, que nous stockons dans l'objet tailles.
Prenons tout de suite d'autres exemples de fonctions courantes :
2.
3.
4.
5.
6.
7.
R>
tailles <-
c
(167
, 192
, 173
, 174
, 172
, 167
, 171
, 185
, 163
, 170
)
R>
length
(tailles)
[
1
]
10
R>
mean
(tailles)
[
1
]
173.4
R>
var
(tailles)
[
1
]
76.71111
Ici, la fonction length nous renvoie le nombre d'éléments du vecteur, la fonction mean nous donne la moyenne des éléments du vecteur et la fonction var sa variance.
Arguments▲
Les arguments de la fonction lui sont indiqués entre parenthèses, juste après son nom. En général les premiers arguments passés à la fonction sont des données servant au calcul, et les suivants des paramètres influant sur ce calcul. Ceux-ci sont en général transmis sous la forme d'arguments nommés.
Reprenons l'exemple des tailles précédent :
R>
tailles <-
c
(167
, 192
, 173
, 174
, 172
, 167
, 171
, 185
, 163
, 170
)
Imaginons que le deuxième enquêté 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
:
R>
tailles <-
c
(167
, NA
, 173
, 174
, 172
, 167
, 171
, 185
, 163
, 170
)
Recalculons notre taille moyenne :
R>
mean
(tailles)
[
1
]
NA
Eh oui, par défaut, R renvoie NA
pour un grand nombre de calculs (dont la moyenne) lorsque les données comportent une valeur manquante. On peut cependant modifier ce comportement en fournissant un paramètre supplémentaire à la fonction mean, nommé na.rm :
R>
mean
(tailles, na.rm
=
TRUE
)
[
1
]
171.3333
Positionner le paramètre na.rm à TRUE
(vrai) indique à la fonction mean de ne pas tenir compte des valeurs manquantes dans le calcul.
Lorsque l'on passe un argument à une fonction de cette manière, c'est-à-dire sous la forme nom=valeur, on parle d'argument nommé.
Quelques fonctions utiles▲
Récapitulons la liste des fonctions que nous avons déjà rencontrées :
Fonction |
Description |
---|---|
construit un vecteur à partir d'une série de valeurs |
|
nombre d'éléments d'un vecteur |
|
moyenne d'un vecteur de type numérique |
|
variance d'un vecteur de type numérique |
|
opérateurs mathématiques de base |
|
passage à la puissance |
On peut rajouter les fonctions de base suivantes :
Aide sur une fonction▲
Il est très fréquent de ne plus se rappeler quels sont les paramètres d'une fonction ou le type de résultat qu'elle retourne. Dans ce cas on peut très facilement accéder à l'aide décrivant une fonction particulière en tapant (remplacer fonction par le nom de la fonction) :
R>
help
("fonction"
)
Ou, de manière équivalente, ?fonction(6).
Ces deux commandes affichent une page (en anglais) décrivant la fonction, ses paramètres, son résultat, le tout accompagné de diverses notes, références et exemples. Ces pages d'aide contiennent à peu près tout ce que vous pourrez chercher à savoir, mais elles ne sont pas toujours d'une lecture aisée.
Un autre cas très courant dans R est de ne pas se souvenir ou de ne pas connaître le nom de la fonction effectuant une tâche donnée. Dans ce cas on se reportera aux différentes manières de trouver de l'aide décrites dans la partie 10Partie 10 Où trouver de l'aide.
Exercices▲
? Solution
Construire le vecteur suivant :
[
1
]
120
134
256
12
? Solution
Générez les vecteurs suivants, chacun de deux manières différentes :
2.
3.
[
1
]
1
2
3
4
[
1
]
1
2
3
4
8
9
10
11
[
1
]
2
4
6
8
? Solution
On a demandé à quatre ménages le revenu du chef de ménage, celui de son conjoint et le nombre de personnes du ménage :
2.
3.
R>
chef <-
c
(1200
, 1180
, 1750
, 2100
)
R>
conjoint <-
c
(1450
, 1870
, 1690
, 0
)
R>
nb.personnes <-
c
(4
, 2
, 3
, 2
)
Calculez le revenu total par personne du ménage.
? Solution
Dans l'exercice précédent, calculez le revenu minimum et le revenu maximum parmi ceux du chef de ménage :
R>
chef <-
c
(1200
, 1180
, 1750
, 2100
)
Recommencer avec les revenus suivants, parmi lesquels l'un des enquêtés n'a pas voulu répondre :
R>
chef.na <-
c
(1200
, 1180
, 1750
, NA
)