Académique Documents
Professionnel Documents
Culture Documents
TP 1 : Initiation au Logiciel R
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
Si ce cours n’est pas dur techniquement, il va vous demander un travail plus que régu-
lier. Vous êtes prévenu ! ! !
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 :
1 Démarrage
Pour démarrer R : dans un terminal, taper la commande : R.
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.
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.
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 :
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
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.
• 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[2]
[1] 0.25
w <- z[2:3]
w
[1] 0.25 5.34
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.
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"]
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
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
D$couleur
ou bien
D[,2]
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[1,]
[1] 15 14 13 12 11
A[,3]
On obtient la troisième colonne de la matrice A :
[1] 13 8 3
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).
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
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 :
Pour sauver un graphique dans un fichier de type postscript, procéder comme suit :
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().
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)
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")
N.B. Plusieurs fonctions qui ne changent que par leurs paramètres par défaut :
read.csv
read.csv2
read.delim
read.delim2
m <- c(1,3,4,5)
save(m,file="!! ton chemin!! /data.rdata")
load(" !! ton chemin !! /data2.rdata")
m
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.
library()
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.