Vous êtes sur la page 1sur 13

Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

ATELIER SUR LE LOGICIEL R


Intervenant : Yousri Henchiri.

TP 1 : Initiation au Logiciel R

> Les bases du langages R.


> Importation/Exportation de données.

Ceci n’est pas un cours de programmation à proprement parlé mais vise à vous ap-
prendre la programmation scientifique avec le langage R. Cela dit voici un avertissement

aucun cours ne pourra réellement vous apprendre un langage informatique,


ce n’est que vous et vous seul qui le ferez ! ! !

Si ce cours n’est pas dur techniquement, il va vous demander un travail plus que régu-
lier. Vous êtes prévenu ! ! !

Le logiciel R est un clone gratuit des logiciels de calcul de statistique standards S et


S-PLUS. Les principes et les commandes sont presque toujours identiques. De l’aide et de
nombreuses informations sur R peuvent être trouvées sur le site web :

http ://www.r-project.org

De plus, R est un logiciel distribué selon la licence GNU General Public License. La
version officielle actuelle est la version R-3.2.3 (2015-12-10). Elle est disponible dans les
archives du réseau CRAN (Comprehensive R Archive Network) dont les sites de base sont :

http://lib.stat.cmu.edu/R/CRAN/
ou
http://stat.ethz.ch/CRAN/

Quelques références :

Je vous suggère les livres suivants :


F Cohen , Y. and Cohen, J. Y. (2008). Statistics and Data with R : An applied approach
through examples. John Wiley & Sons, Ltd.
F Cornillon, P.-A. and É. Matzner-Lober (2010). Régression avec R (1ère édition). Pra-
tique R. Paris : Springer.
F Crawley, M. J. (2007). The R Book. England : John Wiley & Sons Ltd.
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

F Eubank, R. L. and A. Kupresanin (2011). Statistical Computing in C++ and R (1st


edition.). Boca Raton : Chapman and Hall/CRC.
F Lafaye de Micheaux, P., R. Drouilhet, and B. Liquet (2011). Le logiciel R : Maîtriser le
langage - Effectuer des analyses statistiques (1ère édition). Statistique et probabilités
appliquées. Springer.

1 Démarrage
Pour démarrer R : dans un terminal, taper la commande : R.

Pour afficher ton environnement de travail : taper la commande : getwd().

Pour donner ou spécifier un environnement de travail en particulier : taper la com-


mande : setwd(" !! mettre ton chemin complet de votre dossier de travail !!")

Pour obtenir de l’aide sur une commande : help(commande) ou help.start().

Pour quitter le logiciel R : q() puis : yes, no ou cancel pour choisir de sauvegarder ou
non les objets courants dans le fichier Rdata.

N.B. : Les objets créés lors de la session sont enregistrés dans un fichier intitulé .RData
situé dans le dossier de travail. L’historique de la session est conservée dans un fichier
.Rhistory. Les fichiers .RData s’ouvrent directement dans R par un double-clic ou par
glisser-déposer sur le raccourci. Les fichiers .Rhistory s’ouvrent directement avec l’éditeur
de texte de votre choix.

2 Commandes et fonctions élémentaires

Commande Description Commande Description


a + b addition x <- a assigner x à la valeur a
a - b soustraction ls() lister les objets du répertoire
a * b multiplication rm(x) supprimer l’objet x
a / b division rm(list = ls()) effacer tout l’environnement
a ∧ b puissance pi valeur de π
log(a) logarithme népérien sin, cos, tan les fonctions circulaire
exp(a) exponentielle asin, acos, réciproques des fonctions circulaire
atan
sqrt(a) racine carré min, max la valeur minimale ou maximale
! opérateur logique "NON" == opérateur logique "égalité"
| opérateur logique "OU" & opérateur logique "ET"
all.equal() tester l’égalité de deux valeurs cumsum() la somme cumulée
prod() le produit cumprod() le produit cumulée
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

N.B. : Les trois valeurs logiques possibles dans R sont :


1. le vrai (TRUE que l’on peut abréger par T)
2. le faux (FALSE que l’on peut abréger par F)
3. l’indécidable (NA à ne pas confondre avec NaN)

Pour plus des détails sur les commandes et les fonctions élémentaires, le lecteur peut
se référer au R Reference Card, by Tom Short, EPRI PEAC, tshort@epri-peac.com 2004-
11-07 Granted to the public domain. See www.Rpad.org for the source and latest version.
Includes material from R for Beginners by Emmanuel Paradis (with permission). Voir la
dernière page de TP ! !

3 Principes de base
Objets :

Les entités que R crée et manipule sont des objets. Il peut s’agir de valeurs numériques,
de vecteurs, de listes, de chaînes de caractères, de tableaux de données, de fonctions, ou de
graphiques, par exemple. La structure des objets dépend de leur type. Ils comportent gé-
néralement plusieurs composantes auxquelles on peut accéder facilement. Le résultat d’une
commande est, de façon générale, un objet.

Exécution d’une commande :

Il suffit de taper une commande, puis d’appuyer sur la touche d’entrée. Les diffé-
rentes composantes de l’objet produit par la commande sont affichées à l’écran. L’exemple
de commande le plus simple est celui d’une opération arithmétique. Taper dans le terminal :

3+5
[1] 8
((3+6+9)/3-(2 ∗ 8) ∧ 2)/4
[1] -62.5

N.B. : le [1] signifie que c’est la première composante de l’objet résultat qui est affichée.
Ici, il n’y en a qu’une car le résultat est un nombre. On peut également utiliser des pré-
dicats logiques (opérateurs de comparaison, par exemple) dont le résultat est une valeur
booléenne (TRUE ou FALSE) :

3<2
[1] FALSE
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

Il est souvent plus intéressant de stocker l’objet résultant d’une commande dans une
variable, afin de pouvoir le manipuler ultérieurement :

Affectation d’un objet à une variable :

La flèche d’affectation x <- (attention <- obtenu avec le tiret sous la touche 6) ou la
commande x = affecte le résultat d’une commande à la variable x. Après affectation, x
désignera l’objet résultat de la commande, jusqu’à ce qu’une autre affectation ait lieu qui
remplace le contenu de la variable x.

x <- 2
x
[1] 2
x <- 3+ 5
x
[1] 8
x>3
[1] TRUE

N.B. : Le signe égal (=) est parfois utilisé pour faire des affectations : x = 7 Mais ceci
ne fonctionnera pas dans tous les contextes, par exemple si l’affectation est elle-même en
capsulée dans une fonction. Si on utilise la fonction system.time() pour évaluer le temps
que prend une affectation, cela fonctionne parfaitement avec l’opérateur <- :

system.time(x <- 7)
user system elapsed
0 0 0

mais donnera une erreur avec l’opérateur = :

system.time(x = 7)
Error in system.time(x = 7) : unused argument(s) (x ...)

En effet, l’opérateur = est utilisé également pour donner une valeur aux paramètres
d’une fonction lors de leur appel. Mais ici, il n’y a pas de paramètre x pour la fonction
system.time(), d’où l’erreur produite. Pour éviter la confusion il est préférable de n’utili-
ser l’opérateur = que pour donner une valeur aux paramètres lors de l’appel d’une fonction.

Classes d’objets principales

• vecteur : vector
Il s’agit de l’objet de base dans R. Un vecteur est un ensemble d’éléments de même
type, le plus souvent des valeurs numériques mais aussi des chaînes de caractères ou
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

des booléens. Un objet à seul élément sera considéré comme un vecteur de taille 1.
La commande c() crée un vecteur avec les arguments que l’on souhaite :

z <- c(1.25, 0.25, 5.34)


ou bien
s <- c("bleu","vert","marron")

On peut créer des vecteurs de différentes manières :

x <- 15:5 crée un vecteur contenant la suite des entiers allant de 15 à 5.


x <- seq(1.5, 5.1, by = 0.1) crée un vecteur contenant une suite de valeurs
allant de 1.5 à 5.1 avec un pas de 0.1.
x <- rep(1,3) crée un vecteur contenant 3 fois l’entier 1.
x <- rep(2:15,3) crée un vecteur contenant 3 fois les entiers de 2 à 15.

Si l’on applique à un vecteur une fonction qui devrait s’appliquer à un nombre,


celle-ci s’applique à chaque composante du vecteur :

z <- c(1.25, 0.25, 5.34)


z*2
[1] 2.5 0.5 10.68

Chaque composante du vecteur z est multipliée par 2.


Pour accéder à la k-ième composante d’un vecteur z, il suffit de taper z[k] :

z[2]
[1] 0.25

Pour sélectionner un sous-vecteur d’un vecteur a allant de la k-ième à la m-ième


composante, il suffit de taper : a[k:m].

w <- z[2:3]
w
[1] 0.25 5.34

Le vecteur w contient les composantes 2 et 3 du vecteur z.

Pour ordonner les éléments d’un vecteur, il suffit de taper la commande sort() :

a <- c(1,3,2,7,4)
sort(a)
[1] 1 2 3 4 7
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

En pratique, on utilise plutôt la fonction order() qui donne la permutation qui


donne le rangement par ordre croissant :
a <- c(1,3,2,7,4)
order(a)
[1] 1 2 3 4 7
order(a)
[1] 1 3 2 5 4
a[order(a)]
[1] 1 2 3 4 7
all.equal(a[order(a)], sort(a))
[1] TRUE

Pour renverser l’ordre des éléments d’un vecteur, il suffit d’utiliser la commande
rev() :
a <- c(1,3,2,7,4)
rev(a)
[1] 4 7 2 3 1

Les éléments d’un vecteur peuvent avoir des noms. La fonction names() permet
en effet d’associer une étiquette à chacun des éléments d’un vecteur. Taper le pro-
gramme suivant :

x <- 1 :5
names(x) <- c("a","b","c","d","e")
v <- c(1,2,3,4)
names(v) =c("alpha","beta","gamma","delta")
v["beta"]

Les fonctions cbind et rbind permettent de manipuler des vecteurs de manière à


former une matrice par concaténation sur les colonnes ou sur les lignes. Taper et
commenter le code suivant :

x <- seq(1 :5)


y <- 2*x
cbind(x,y)
xy <- rbind(x,y)

• Tableau de données : data.frame


Le dataframe est le format naturel de stockage des données sur lesquelles on souhaite
faire des traitements statistiques. Ses colonnes sont des vecteurs représentant des
variables (qui peuvent être de types différents : quantitatives ou qualitatives) décri-
vant les mêmes individus ou observations en ligne. C’est donc un tableau de
type Individu/Variable. On crée un dataframe en spécifiant ses vecteurs-colonnes :
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

D <- data.frame(c(10,20,25,15),c("bleu","bleu","vert","bleu"),c(F,F,T,F))
D

1 10 "bleu" FALSE
2 20 "bleu" FALSE
3 25 "vert" TRUE
4 15 "bleu" FALSE

Le data.frame D possède 3 variables en colonne et 4 individus en ligne.


On peut nommer les variables codées en colonne de la façon suivante :

names(D) <- c("age","couleur","fille")

ou bien encore leur donner un nom au moment même de la création du data.frame


de la façon suivante :

D <- data.frame(age = c(10,20,25,15),couleur=c("bleu","bleu","vert","bleu"),


fille = c(F,F,T,F))

N.B. Si un seul nombre est mis à la place d’un vecteur-colonne, une colonne de
dimension adéquate est créée par R et le nombre est répliqué autant de fois que
nécessaire :

M <- data.frame(18,c(F,F,T))
M

1 18 FALSE
2 18 FALSE
3 18 TRUE

On accède aux variables composant un dataframe à partir du nom de la variable.


Par exemple, pour obtenir la variable couleur du dataframe D :

D$couleur
ou bien
D[,2]

Pour extraire le sous-tableau composé des lignes i à j et des colonnes k à ` d’un


tableau de données D, on peut procéder comme suit :

D[1:2,2:3]
D[1:2,2:3]
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

1 "bleu" FALSE
2 "bleu" FALSE

• Liste : list
Cet objet est une liste pouvant contenir plusieurs composantes hétérogènes (de types
différents), chacune pouvant être adressée par son numéro :

L <- list(25,"message",c(3.5,2.0))
L[[2]]
[1] message
L[[3]]
[1] 3.5 2.0

• Matrice : matrix
Cet objet est semblable à la notion mathématique de matrice : c’est un tableau
contenant des valeurs numériques, des caractères, ou des objets booléens. Cepen-
dant, contrairement au dataframe, tous les éléments du tableau doivent être du
même type. Par exemple, pour créer une matrice de 3 lignes et 5 colonnes contenant
les nombres de 15 à 1.

A <- matrix((15:1), nrow=3, ncol=5,byrow=T)

L’argument byrow permet de remplir la matrice horizontalement (byrow=T) ou ver-


ticalement (byrow=F, l’option par défaut).

La commande dim(A) : donne les dimensions (nombre de lignes et colonnes) de


la matrice A. Les lignes et les colonnes peuvent être spécifiquement désignées par
[numligne,] et [,numcol] respectivement, par exemple :

A[1,]

On obtient la première ligne de la matrice A :

[1] 15 14 13 12 11
A[,3]
On obtient la troisième colonne de la matrice A :
[1] 13 8 3

Voici quelques commandes sur les matrices :


t(A) : donne la transposée de la matrice A.
B <- cbind(A[,2],A[,5])
C <- rbind(A[3,],A[2,])
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

construit une matrice B dont les colonnes sont les colonnes 2 et 5 de la matrice A et
une matrice C dont les lignes sont les lignes 3 et 2 de la matrice A.
colnames(A) <- list("col1","col2","col3","col4","col5")
rownames(A) <- list("li1","li2","li3")
donne des noms aux colonnes de A ou aux lignes de A.

N.B. Une matrice peut être transformée en dataframe (afin de lui appliquer plus
naturellement les traitements statistiques) par la commande : as.data.frame(A).

• Commandes sur les caractéristiques des objets :


class(objet) : indique la classe de objet. Exemple : class(A)
length(objet) : indique le nombre de composantes de l’objet. Exemple : length(A)
dim(objet) : si l’objet est une matrice ou un data.frame donne sa dimension.
Exemple : dim(A)

Pour accéder à une composante d’un objet on peut l’indiquer par son numéro ou
par son nom, suivant les syntaxes suivantes : A[[2]] ou A$col2

4 Quelques fonctions statistiques élémentaires


Quelques fonctions statistiques s’appliquant à une distribution observée codée sous
forme de vecteur (ou de dataframe) :

length() # nombre de valeurs stockées dans le vecteur.


sum() # faire la somme des valeurs du vecteur.
mean() # moyenne des valeurs du vecteur.
sd() # écart-type des valeurs du vecteur.
var() # variance des valeurs du vecteur.
quantile() # donne les quantiles (par défaut les quartiles).
summary() # donne un résumé de la distribution des données.

Exemple :
notes <- c(15, 8, 14, 12, 14, 10, 18, 15, 9, 5, 12, 13, 12, 16)
ou
notes <- scan()
taper les notes 15, 8, 14, 12, 14, 10, 18, 15, 9, 5, 12, 13, 12, 16
sort(notes)
[1] 5 8 9 10 12 12 12 13 14 14 15 15 16 18
length(notes)
[1] 14
min(notes)
[1] 5
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

max(notes)
[1] 18
range(notes)
[1] 5 18
median(notes)
[1] 12.5
quantile(notes)
0% 25% 50% 75% 100%
5.00 10.50 12.50 14.75 18.00
mean(notes)
[1] 12.35714
var(notes)
[1] 11.93956
sd(notes)
[1] 3.455367
unique(notes)
[1]15 8 14 12 10 18 9 5 13 16
sort(unique(notes))
[1] 5 8 910 12 13 14 15 16 18

5 Graphiques
Les graphiques sont "imprimés" avec R dans des devices, qui peuvent être soit des fe-
nêtres à l’écran, soit des fichiers (pour réutiliser ces graphiques à l’extérieur de R). Une fois
ouvert un device, R y enverra le graphique demandé. Par exemple :

x11() # ouvre une nouvelle fenêtre graphique.


x <- c(2,6,8,9,5,7,4,5,12,12,14,15).
hist(x) # trace l’histogramme de x.
dev.off() # ferme le device ouvert avec la commande x11().

Pour sauver un graphique dans un fichier de type postscript, procéder comme suit :

postscript() # permet d’ouvrir un device de type postscript.


postscript("file.ps", horizontal=FALSE, height=5, pointsize=10) # ouverture
du device.
hist(x) # trace l’histogramme des données de x.
dev.off() # ferme le device ouvert avec la commande postscript.

N.B. : Il existe d’autre type de devices pour sauver les graphiques dans d’autre format :
jpeg(), pdf(), png(). Attention : toujours fermer un device écrivant dans un fichier avec
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

la commande dev.off().

Reproduire et commenter les programmes suivants

x <- (1 :100)/100
plot.new()
lines(x,x∧2)
axis(1)
axis(2)
title("Fonction carré")
z <- (1 :20)/20
points(z,z∧2)
plot.new()
op<-par(col="red")
plot(x,x∧2)
points(x,x∧3,"`")
par(op)

6 Charger/sauvegarder des données, un programme ...


Lecture d’un tableau à partir d’un fichier texte externe :

Si l’on souhaite créer un dataframe à partir d’un fichier qui contient déjà les données
(fichier de type texte) afin d’éviter la saisie à la main :

x <- read.table("monfichier")

La variable x reçoit le contenu du fichier de données, de forme standard :


la première ligne doit contenir le nom pour chaque variable (c’est-à-dire, pour chaque
colonne) lue. (si la première ligne ne contient pas le nom des variables, il faut
l’indiquer par l’option head=FALSE.)
chaque ligne suivante contient le nom de la ligne (optionnel) puis une valeur pour
chaque variable.
les différentes valeurs peuvent être séparées par des espaces et/ou des TAB.

Ecriture d’un tableau dans un fichier de données :

D <- data.frame(ident = c("a","b","c"), age = c(15,45,52),


taille = c(1.65,1.72,1.80))
write.table(D,file="donnees",sep=" ")
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

sauvegarde le dataframe D dans le fichier nommé donnees en utilisant un espace comme


séparateur. Afin d’éviter la saisie à la main il faut juste taper : D1 <- read.table("donnees")

N.B. Plusieurs fonctions qui ne changent que par leurs paramètres par défaut :
read.csv
read.csv2
read.delim
read.delim2

N.B. : Nous pouvons utiliser les commandes suivantes save() et load()

m <- c(1,3,4,5)
save(m,file="!! ton chemin!! /data.rdata")
load(" !! ton chemin !! /data2.rdata")
m

Charger un programme à partir d’un fichier :

Cette opération est nécessaire dès que vous avez à écrire plusieurs lignes de codes ou si
vous voulez exécuter plusieurs fois de suite votre programme ou lors de sessions différentes.

créer un fichier de commandes R qui contient votre code mescommandes.R dans


un éditeur de votre choix (KDE, emacs, etc). Ce fichier doit se trouver dans le
répertoire courant de travail. Pour connaitre le répertoire de travail, taper getwd().
Pour changer de répertoire de travail taper setwd("Z://nom//M es_T P _Stat").
Ainsi, R ira lire le fichier de commandes mescommandes.R dans le répertoire de
votre choix, ici M es_T P _Stat, dans votre compte nom.
écrire les commandes R dans le fichier mescommandes.R, le sauvegarder.
Exécuter les commandes R du fichier mescommandes.R en tapant dans R :
source("mescommandes.R").

7 Installer une extension


Quand on vient d’installer R, comme ci-dessus, on dispose de la version de base. Dans
la console de travail, taper :

library()

On obtient une fenêtre de documentation avec la liste des librairies installées. Si on


ouvre le dossier library du dossier d’installation de R, on obtient la liste équivalente des
dossiers des librairies. La même liste s’affiche dans une fenêtre flottante en activant l’op-
tion Charger le package... du menu Packages. Il existe 27 librairies de la version de base et
Institut Supérieur des Arts Multimédia de la Manouba (ISAMM). | 2021-2022.

plus de 450 librairies additionnelles. Supposons qu’on soit concerné par le librairie tripack
qui propose Triangulation of irregularly spaced data. Si elle n’est pas installée, on
pourra en disposer après une petite manipulation. Il faut simplement distinguer l’installa-
tion du package qui consiste à télécharger et installer définitivement des fichiers formant
un package du chargement de la librairie qui consiste à mettre en mémoire ces données
pour une session de travail.

Exemple (charger un package) :


library(tripack)

Exemple (installer un package) :


install.packages("splines")

Vous aimerez peut-être aussi