IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet pour apprendre R avec une pratique pour l'analyse de données sociologiques

Image non disponible R pour les sociologues (et assimilés)


précédentsommairesuivant

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 :

Image non disponible
Figure 2.1 - L'interface de R sous Windows au démarrage
 
Sélectionnez
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 :

 
Sélectionnez
R> 2 + 3

La réponse de R ne se fait pas attendre :

 
Sélectionnez
[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 :

 
Sélectionnez
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 :

 
Sélectionnez
R> 4 *
+

On peut alors compléter la commande en saisissant simplement 3 :

 
Sélectionnez
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.

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
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 :

 
Sélectionnez
R> tailles <- c(167, NA, 173, 174, 172, 167, 171, 185, 163, 170)

Recalculons notre taille moyenne :

 
Sélectionnez
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 :

 
Sélectionnez
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

c

construit un vecteur à partir d'une série de valeurs

length

nombre d'éléments d'un vecteur

mean

moyenne d'un vecteur de type numérique

var

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 :

Fonction

Description

min

valeur minimale d'un vecteur numérique

max

valeur maximale d'un vecteur numérique

sd

écart-type d'un vecteur numérique

:

génère une séquence de nombres. 1:4 équivaut à c(1,2,3,4)

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) :

 
Sélectionnez
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

Exercice 2.1

? Solution

Construire le vecteur suivant :

 
Sélectionnez
[1] 120 134 256 12

Exercice 2.2

? Solution

Générez les vecteurs suivants, chacun de deux manières différentes :

 
Sélectionnez
1.
2.
3.
[1] 1 2 3 4
[1]  1  2  3  4  8  9 10 11
[1] 2 4 6 8

Exercice 2.3

? 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 :

 
Sélectionnez
1.
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.

Exercice 2.4

? Solution

Dans l'exercice précédent, calculez le revenu minimum et le revenu maximum parmi ceux du chef de ménage :

 
Sélectionnez
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 :

 
Sélectionnez
R> chef.na <- c(1200, 1180, 1750, NA)

précédentsommairesuivant
La présence du [1] en début de ligne sera expliquée par la suiteVecteurs.
C'est l'abréviation de combine. Le nom de cette fonction est très court, car on l'utilise très souvent.
Quand R effectue une opération avec deux vecteurs de longueurs différentes, il recopie le vecteur le plus court de manière à lui donner la même taille que le plus long, ce qui s'appelle la règle de recyclage (recycling rule). Ainsi, c(1,2) + c(4,5,6,7,8) vaudra l'équivalent de c(1,2,1,2,1) + c(4,5,6,7,8).
L'utilisation du raccourci ?fonction ne fonctionne pas pour certains opérateurs comme *. Dans ce cas on pourra utiliser ? '*' ou bien simplement help("*").

Copyright © 2017 - Julien Barnier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts