logiciel R
logiciel R
logiciel R
Mohammed Fekri
1 Introduction
Lorsqu’on ouvre une session , les données de travail et les commandes utilisées seront enreg-
istrées à l’endroit où a été installé. Pour connaı̂tre le répertoire dans lequel travail, écrivez
dans la fenêtre de contrôle ( console) : getwd() qui signifie ”obtenir le répertoire de travail”.
Il est possible de changer ce répertoire de travail en tapant la commande setwd(".....") ou
bien dans le menu déroulant ”Fichier” il y a une option ”Changer le répertoire courant” qui par
l’intermédiaire d’une arborescence permet de choisir un répertoire.
En quittant , il vous propose de sauvegarder le travail effectué : Sauver une image de la
session ? [Oui / Non / Annuler]. En choisissant Oui, une icône sera alors créée dans le
répertoire de travail. En cliquant sur cette icône, une nouvelle session s’ouvrira directement dans
le répertoire concerné et les objets crées à la session précédente seront conservés.
Dans la fenêtre de contrôle de , on peut rentrer les instructions après le prompt >. On tape les
instructions (qui figurent en rouge), et le logiciel les exécute et affiche le résultat (en bleu). Il est
plus commode de saisir les instructions dans un fichier à l’aide de l’éditeur fourni dans le logiciel
1
Initiation au logiciel 3 LES OBJETS
dans le menu Fichier (choisir Nouveau script) ou avec un éditeur de texte de votre choix.
Pour exécuter ces instructions, on peut les copier et les coller dans la fenêtre de contrôle. Une
ligne tapée dans l’éditeur peut être recopiée dans la fenêtre de contrôle en cliquant sur le bouton
"Exécuter la ligne ou sélection" ou à l’aide du raccourci "Ctrl-R". Pour exécuter plusieurs lignes
à la fois, il suffit de les sélectionner. Vous pouvez également utiliser la fonction source("....")
de puis la fenêtre de contrôle pour aller lire et executer le contenu de votre fichier. Cela évitera
de surcharger inutilement votre console.
3 Les Objets
Les éléments de base de sont des objets qui peuvent être des données (vecteurs, matrices,
etc. . . ), des fonctions, des graphiques . . . . Les objets se différencient par leur mode, qui
décrit leur contenu et leur classe. Les objets atomiques sont de mode homogène et les objets
récursifs sont de mode hétérogène. Les différents modes sont :
Par défaut conserve en mémoire tous les objets crées dans la session. Il est donc recommandé
de supprimer régulièrement des objets. Pour connaı̂tre les objets de la session, on utilise les
fonctions objets() ou ls(). Pour supprimer l’objet x, on tape :
> rm(x)
> rm(objet1,objet2)
Pour supprimer une liste d’objets qui possèdent une partie de leur nom en commun, par exemple
la lettre a, on utilise :
> rm(list=ls(pattern=".*a.*"))
c Mohammed Fekri 2
Initiation au logiciel 4 LES VECTEURS
4 Les Vecteurs
Les vecteurs sont extrêmement employés en et sont composés de données de mêmes types.
La création d’un vecteur peut se faire de différentes méthodes dont voici les principales :
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
> seq(1,10,by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
[14] 7.5 8.0 8.5 9.0 9.5 10.0
> seq(1,10,length=5)
[1] 1.00 3.25 5.50 7.75 10.00
> rep(1,6)
[1] 1 1 1 1 1 1
• En utilisant la fonction scan. demande alors d’entrer les éléments au fur et à mesure.
Avec l’argument n=4, on précise que quatre éléments seront collectés. Si on ne précise pas
n, on arrête de collecter en mettant une valeur vide.
c Mohammed Fekri 3
Initiation au logiciel 4 LES VECTEURS
Il est possible de concaténer deux vecteurs (formés de variables de même type) pour en former
un nouveau vecteur :
Il est aussi possible de sélectionner une partie d’un vecteur avec l’opérateur [ ] et un vecteur de
selection :
Pour donner un nom à chaque composante d’un vecteur, on peut utiliser la commande :
c Mohammed Fekri 4
Initiation au logiciel 5 LES MATRICES
ou bien :
Pour classer les composantes d’un vecteur par ordre croissant en utilise la fonction sort
> sort(notes1)
[1] 13 16 18
> rev(sort(notes1))
[1] 18 16 13
5 Les Matrices
Comme pour les vecteurs, les matrices sont des objets atomiques, c’est-à-dire de même type
pour toutes les valeurs. Une matrice est créée à partir d’un vecteur contenant les valeurs, et
d’un nombre de ligne (nr ou nrow, pour Number of Row) et/ou de colonne (nc ou ncol, pour
Number of Column) :
Noter que par défaut rempli les matrices valeur par valeur. Pour remplir les éléments ligne
par ligne, on utilise l’argument byrow=T :
c Mohammed Fekri 5
Initiation au logiciel 5 LES MATRICES
Si la longueur du vecteur est différente du nombre d’éléments de la matrice (nr × nc) alors
l’opération effectuée par est la suivante :
• Si le vecteur est trop grand, la matrice est construite à partir des premiers éléments :
On peut aussi utiliser la fonction scan pour construire une matrice en introduisant les éléments
un par un :
c Mohammed Fekri 6
Initiation au logiciel 5 LES MATRICES
Un vecteur n’est pas considéré par comme une matrice. Cependant, la fonction as.matrix
permet de transformer un vecteur en une matrice unicolonne :
Il est possible d’attribuer des noms aux lignes et aux colonnes avec rownames() et colnames() :
L’emplacement d’un élément, une ou plusieurs lignes et/ou une ou plusieurs colonnes d’une
matrice est en général donné par les numéros des lignes et des colonnes :
Pour récupérer la ligne i sous la forme d’une matrice uniligne et non plus d’un vecteur, on utilise :
c Mohammed Fekri 7
Initiation au logiciel 5 LES MATRICES
> matr[i,,drop=FALSE]
La fonction cbind (resp. rbind) permet de concaténer des colonnes (resp. des lignes) :
> cbind(matr,c(10,11,12))
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> rbind(matr,c(10,11,12))
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[4,] 10 11 12
La fonction apply permet d’appliquer une fonction aux lignes (MARGIN=1) ou aux colonnes
(MARGIN=2) de la matrice :
> apply(matr,2,mean) # moyennes par colonne
[1] 2 5 8
> apply(matr,1,sum) # sommes par ligne
[1] 12 15 18
c Mohammed Fekri 8
Initiation au logiciel 6 GRAPHIQUES
6 Graphiques
Les possibilités graphiques de sont particulièrement simples à utiliser et offrent une multitude
d’options pour les personnaliser. La façon la plus simple de produire des graphiques sous est
d’utiliser la fonction plot. par exemple,
2pour
représenter à intervalles réguliers les points de la
1 x
courbe de la fonction x 7−→ √2π exp − 2 sur [−3, 3], on utilise les commandes suivantes :
Les graphiques peuvent être sauvegardés en pdf, ps, jpeg, . . . . Si on veut faire apparaı̂tre plusieurs
graphiques dans la même fenêtre, on utilise la fonction par.
L’instruction par(mfrow=c(n,p)) organise np graphiques en n lignes et p colonnes. On peut
aussi avoir besoin d’ouvrir plusieurs fenêtres graphiques, on utilise pour cela X11() ou windows().
c Mohammed Fekri 9
Initiation au logiciel 6 GRAPHIQUES
0.4
●●
●● ●●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.3
● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.2
fx
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.1
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●●
●● ●●
●● ●●
●●●●●● ●●●
●●●●
0.0
●●
−3 −2 −1 0 1 2 3
xi
2
nuage de points de la fonction x 7−→ √1 exp − x2
2π
Par ailleurs, voici une liste d’arguments que l’on utilise fréquemment :
Argument Description
pch entier entre 0 et 25 qui contrôle le type de symbole ou
éventuellement n’importe quel caractère entre guillemets
lty=n contrôle le style de la ligne tracée (n=1 : continue, n=2 : tirets,
n=3 : points, n=4 : points et tirets alternés, n=5 : tirets longs,
n=6 : tirets courts et longs aternés)
cex=x conrôle la taille des caractères et des symboles. x=1 est la valeur
par défaut
xlim=c(a,b) contrôle les limites pour les axes x et y. Souvent utilisé pour faire
ylim=c(a,b) plusieurs graphiques à la même échelle
xlab, ylab permet de donner des noms aux axes. Par défaut, ce sont les noms
des variables x et y qui sont utilisées
main précise le titre du graphe
mfrow=c(n,p) organise np graphiques en n lignes et p colonnes
lwd contrôle l’épaisseur des traits
pos précise la position du texte (valeurs permises 1, 2, 3, 4) par exemple
text(x,y,expression(paste(alpha)),pos=3)
c Mohammed Fekri 10
Initiation au logiciel 7 LES LOIS USUELLES
Un certain nombre de lois de probabilité usuelles ont été implémentées dans . Toutes les
fonctions commencent par les lettres d, p, q ou r et se terminent par une abréviation du nom de
la loi.
La lettre d signifie que la fonction calcule la probabilité ponctuelle (pour les v.a.d.), ou la densité
(pour les v.a.c.), la lettre p signifie que la fonction calcule la fonction de répartition, la lettre q
signifie que la fonction calcule un quantile et la lettre r signifie que la fonction génère un nombre
pseudo-aléatoire.
Voici un tableau qui décrit quelques lois standards ainsi que les paramètres par défaut quand ils
existent :
Lorsqu’on génère une suite de nombres au hasard, il se peut que nous ayons besoin de reproduire
exactement la même suite de nombres, par exemple pour comparer deux procédures. Dans ce cas
on doit indiquer la graine de départ (seeds) qui permet d’initialiser la suite de réalisation
avec la commande set.seed().
c Mohammed Fekri 11
Initiation au logiciel 7 LES LOIS USUELLES
Fonction Description
pnorm(x) donne la fonction de répartition de la loi N (0, 1) au point x (Φ(x))
dnorm(x,m,σ) donne la densité de la loi loi N (m, σ 2 ) au point x
qnorm(α) donne le quantile d’ordre α de la loi N (0, 1) (Φ−1 (x))
rnorm(n,m σ) donne n réalisation de la loi N (m, σ 2 )
dbinom(k,n,p) donne P {X = k} où X suit une loi B(n, p)
pbinom(k,n,p) donne P {X ≤ k} où X suit une loi B(n, p)
dgeom(k,p) donne P {X = k} = p(1 − p)k
sample(x,n) permet de choisir au hasard n éléments du vecteur x sans remise
(avec remise repl=TRUE)
Il y a des techniques (cf. ch. 5, cours de Probabilités) qui permettent de traiter des lois qui ne
sont pas disponibles dans la librairie de base de .
P {X = 6} = 0.4, P {X = 8} = 0.1.
c Mohammed Fekri 12
Initiation au logiciel 7 LES LOIS USUELLES
0.4
0.2
0.0
c Mohammed Fekri 13
Initiation au logiciel 7 LES LOIS USUELLES
0.30
0.25
0.20
x
0.15
0.10
0.05
0.00
n
• Théorème central limite :
0.2
0.1
0.0
−4 −2 0 2 4
c Mohammed Fekri 14
Initiation au logiciel 8 LES FONCTIONS
8 Les Fonctions
Les fonctions sont des objets qui permettent de découper un programme en un ensemble
d’actions. Un grand nombre de fonctions sont prédéfinies dans . Voici une liste de quelques
fonctions :
c Mohammed Fekri 15
Initiation au logiciel 8 LES FONCTIONS
> ls("package:base")
L’aide en ligne de est particulièrement bien faite. Elle comprend une description de la fonction,
son utilisation, la liste des arguments avec une explication de leur usage, des exemples et les valeurs
par défauts.
Une fonction admet des arguments en entrée et retourne un résultat en sortie. Les arguments
sont soit obligatoires soit optionnels. Dans ce dernier cas, ils possèdent une valeur par défaut. Par
exemple, la fonction runif qui génère des nombres pseudo-aléatoires suivant une loi uniforme.
Cette fonction admet trois arguments : n le nombre de valeurs, min la borne inférieure et max
la borne supérieure. Ces deux derniers sont fixés par défaut à 0 et 1. Pour retrouver les mêmes
résultats d’une simulation à l’autre, il faut fixer la graine du générateur de nombres pseudo-
aléatoire en utilisant la commande set.seed() à une valeur quelconque.
Ces quatre nombres ont été tirés selon une loi uniforme U[0,1] . Si on veut tirer trois nombres selon
une loi uniforme U[1,4] , on utilise :
Il n’est pas indispensable de préciser le nom des arguments à condition de respecter leur ordre.
Cet ordre est défini lors de la création de la fonction. la fonction args renvoie les arguments
d’une fonction :
> args(runif)
function (n, min = 0, max = 1)
NULL
Il est possible d’écrire soit même des fonctions personnalisées soit directement au départ de la
console, soit en utilisant un éditeur de texte. La seconde possibilité permet la correction du code
en cours d’édition, tandis que la première s’effectue ligne par ligne sans retour en arrière possible.
Voici un exemple simple, avec la syntaxe à utiliser :
c Mohammed Fekri 16
Initiation au logiciel 9 PROGRAMMATION EN R
> nom_Fonction(1,3)
[1] 16.03704
9 Programmation en R
Sous un groupe de commandes est délimité par des accolades :
> {
+ expression1
+ expression2
+ ...
}
Deux commandes successives sont séparées par un retour à la ligne. Cependant, il est possible
d’écrire plusieurs commandes sur une même ligne en les séparant par ;.
Les boucles :
Les structure classique de contrôle (alternatives et répétitives) sont disponible sous . Com-
mençons par la boucle for.
le compteur est initialiser dans cette fonction. Il prend, au premier passage, la première valeur
de l’objet sequence. Dans le deuxième passage, le compteur prend la deuxième et . . . jusqu’à ce
que tous les éléments du vecteur sequence soient passés dans la boucle. Cette boucle est utilisé
lorsqu’on connaı̂t à l’avance la série de valeurs que devra prendre le compteur.
c Mohammed Fekri 17
Initiation au logiciel 9 PROGRAMMATION EN R
> x <- 3
> for (i in 1:4){
x <- x^2
cat(x,"\t")
}
> or[n-1]
[1] 1.618034
Une autre possibilité de boucle est la fonction while. Sa syntaxe est la suivante
Les ordres expression1 ; expression2 ; ... sont effectués tant que la condition est
vraie, celle-ci étant évaluée en début de la boucle. Dès que la condition est fausse, la boucle est
arrêtée. Cette boucle est utilisée lorsqu’on ne sait pas combien de boucles nous devons effectuer.
> i <- 1
> while (i <= 10){
cat(i, "\n")
i <- i+2
}
c Mohammed Fekri 18
Initiation au logiciel 9 PROGRAMMATION EN R
2.0
●
1.8
●
1.6 ● ● ● ● ● ● ● ● ●
●
or[1:14]
●
1.4
1.2
1.0
2 4 6 8 10 12 14
1:14
> cat("Le premier nombre de Fibonacci > 100 est F(", n, ") =", F[n], "\n")
Le premier nombre de Fibonacci > 100 est F( 12 ) = 144
> F
[1] 1 1 2 3 5 8 13 21 34 55 89 144
Une autre possibilité de boucle est la fonction repeat. Dans ce cas la sortie de boucle est assurée
par la fonction break.
> i <- 1
> repeat {
cat(i, "\n")
c Mohammed Fekri 19
Initiation au logiciel 9 PROGRAMMATION EN R
i <- i+2
if (i==9) break
}
Cette instruction teste si x est positif, si c’est le cas, la racine carrée est calculée, sinon le message
”x est négatif” s’affiche :
> x <- 25
> if (x >= 0) sqrt(x) else cat("x est négatif")
[1] 5
Notez que le bloc de commandes doit être entre accolades { } s’il comprend plus d’une commande.
De plus, la partie else {expession3 ; expression4 ; ... } n’est pas obligatoire quand
aucune action n’est requise si la condition est fausse.
show(racines)
}
c Mohammed Fekri 20
Initiation au logiciel 9 PROGRAMMATION EN R
La fonction ifelse est une généralisation vectorielle des commandes if et else. Elle applique
une condition aux éléments d’un object et créée un object du même type rempli par des éléments
dépendant du résultat du test sur chaque élément de départ.
c Mohammed Fekri 21
Initiation au logiciel 9 PROGRAMMATION EN R
c Mohammed Fekri 22
Initiation au logiciel 9 PROGRAMMATION EN R
TRIANGLES DE SIERPINSKY
●
15
10
5
● ●
0
−10 −5 0 5 10
c Mohammed Fekri 23