INTRODUCTION AU LOGICIEL R
Année Académique:
2025/2026
Niveau:
C2A1- IIA : Cycle 2, Année 1
Filière : Master Actuariat, 1ère année
IIA– Yaoundé, Cameroun
WANSOUWE WANBITCHING, PhD.
1
Informations générales
Intitulé : Introduction à R
◦ Cours magistral : 5 heures
◦ Travaux dirigés / TP : 5 heures
Éléments constitutifs de l'Unité d'Enseignement
◦ Cours magistral : soyez attentifs!
◦ Travaux Dirigés : Exercices
◦ Travail Personnel de l'étudiant
Organisation des évaluations
◦ Exercices et Travaux Pratiques
◦ Questions de cours
◦ Parfois des QCM
Types d'évaluation
◦ Projet : en binômes
2
Plan
o Chapitre 1: Généralités sur R
ü Introduction
ü Objets de R
o Chapitre 2 : Langage R
ü Structures de données
ü Fonctions
o Chapitre 3 : R et Statistiques
ü Manipulation des données
ü Tests statistiques
3
Pourquoi ce cours ?
L’objet de ce cours est d’initier les
apprenants à l’utilisation du logiciel R
pour l’analyse et le traitement des
données statistiques.
Ce cours doit être compris comme une
introduction à….
4
Bibliographie
Pierre-André Cornillon et al. (2012). Statistiques avec R,
3e édition revue et augmentée, Presses universitaires de
Rennes.
Pierre Lafaye de Micheaux, Rémy Drouilhet, Benoît Liquet
(2014). Le logiciel R : Maîtriser le langage – Effectuer des
analyses statistiques, 2e édition, Springer.
Crawley, M.J. (2013). The R book, 2e edition, Wiley.
5
Chapitre 1 : Généralités sur R
6
I. Introduction – 1. Présentation
R est un système d’analyse statistique et graphique
créé par Ross Ihaka et Robert Gentleman1
•Logiciel gratuit téléchargeable
[Link]
•Développé par une communauté de statisticiens
rassemblés dans le R Development Core Team
•Distribué pour Windows, Linux, Unix, Macintosh
1 7
Ikaha Ross, Gentleman Robert. 1996. R: a language for data analysis and graphics. J. Comput. Graph. Stat., 5: 299-314.
[Link]
Liens pour télécharger
(gratuitement) R, des
packages, de la doc,
etc…
Moteur de recherche
Documentation
8
•R peut être couplé à d’autres systèmes
d’analyse de données (système d’analyse
spatiale GRASS …)
Représentation graphique des données Analyse des structures spatiales
• Le principal inconvénient est un manque de
convivialité
9
Pour vous guider, vous disposez de nombreux sites d’aide
et d’exemples sur internet, par exemple :
[Link]
[Link]
En cas de difficultés, il est possible d’adresser vos
questions à la R help list
[Link]
10
De nombreux tutoriels sont également disponibles sur internet, par exemple :
« R pour les débutants », Emmanuel « An introduction to R », Venables et
Paradis al (en anglais)
D’autres sont disponibles sur le site de R-project :
[Link]
11
2. Utilisation de R
R peut être utilisé de deux manières
ü Console de calcul
ü Script de programmation
12
Bienvenue dans la console R…
13
2.1. Le Répertoire de travail
• Il est indispensable avant tout travail dans R, de
spécifier le dossier de travail dans lequel se trouve le
(ou les) fichier(s) de données à analyser :
File → Change Dir… → sélectionner le dossier*
Ou pour la version française :
Fichier → Changer le répertoire courant… →
sélectionner le dossier*
• L’on peut contrôler le working directory, le
répertoire de travail : getwd() et le
changer par setwd() 14
2.2. Aide et commandes sous R
Syntaxe pour obtenir l’aide sur une commande :
?nom_commande ou help(‘nom_commande’)
Syntaxe pour utiliser une commande :
nom_de_la_commande(argument1,argument2,…)15
Enregistrement du travail
Dans la console R
1 Dans un éditeur 2.2. Sauver
2.1. votre historique de
sauver votre script
commande.
Sauver votre environnement de
travail cad tous les objets créés au
cours de votre travail. 16
Rstudio : un IDE
17
II. Les objets de R
R manipule différents types d’objets:
o Les vecteurs
o Les matrices
o Les listes
o Les facteurs
o Les dataframes
18
Les opérateurs arithmétiques
Assignation : =, <-, –> ou assign
Addition : +
Soustraction : -
Division : /
Multilplication : *
Puissance : ** ou ^
19
II.1. Les vecteurs
Syntaxe d’assignation d’un vecteur
Assigner un vecteur :
• x <- c(x1, x2, …, xn)
Ou
• assign("x", c(x1, x2, …, xn))
Ou
• c(x1, x2, …, xn) –> X
Exemples
• x <- c(-1,1,0,4)
• c(-1,1,0,4)->x
• assign("x",c(-1,1,0,4))
20
Accès aux éléments d’un vecteur
o Le ième élément de x est : x[i]
o L’indice commence par 1
Exemple :
Soit x = c(-1,1,0,4)
x[1] -------- > -1
x[3] -------- > 0
x[-2] -------- > -1 0 4 * Ici on retire le 2ième élément*
x[c(1,3)] --- > -1 0 * Ici on extrait un sous-vecteur*
21
Manipulations des vecteurs
Concaténation de vecteurs
Soient x,y deux vecteurs
> z <- c(x,y)
Forme un vecteur composé des éléments de x
puis ceux de y.
> t <- c(x,0,y,1)
Forme t en mettant les éléments de x, puis 0
puis ceux de y puis la valeur 1
22
Manipulations des vecteurs
o Inverse
> m <- 1/x
m contient les inverses des éléments de x.
o Ajout d’une constante
> n <- x+2
n contient les valeurs de x ajoutées de 2, etc..
o Somme de deux vecteurs
Si x et y ont même longueur, alors
> b <-x+y met dans b la somme des éléments de x et y
b[i]=x[i]+y[i]
Sinon, le plus court est complété automatiquement de façon
cyclique 23
Manipulations des vecteurs
o Exemple de somme de deux vecteurs
> x =c(1:5) -------- > x :1 2 3 4 5
> y =c(1,2) ----------> y :1 2
> x+y -------- > 2 4 4 6 6
En effet, pour calculer x+y, on a :
x :1 2 3 4 5
y :1 2 1 2 1
24
Création de vecteurs avec seq
Le mot clé seq permet de créer des vecteurs
Syntaxe : seq(from,to, by) / seq(from,to, length)
x <- seq(1, 30) équivalent à x <- 1:30
x <- seq(30,1) crée le vecteur 30, 29, …,1
>x <- seq(-5, 5, by=2) : par pas de 2.
> x<-seq(1,6,length=5) : de longueur 5.
25
Création de vecteurs avec rep
Le mot clé rep permet de créer des vecteurs
par répétition
Syntaxe : rep(object , times, each,…)
Exemple :
> y<-rep(c(2,7,9),each=2)
> y<-rep(c(2,7,9),c(2,3,2))
N.B. On peut également avoir des vecteurs de
chaines de caractère.
Z<-c("nom","prénom","age") 26
[Link] matrices - création
Création des matrices
Les matrices sont créées avec la fonction matrix() à
partir d'un vecteur.
On doit fixer le nombre de colonnes ncol et/ou le
ombre de lignes nrow.
Exemple
o H <-matrix(1:20,nrow=4,ncol=5)
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
27
Les matrices avec array()
La fonction array() permet également de créer des
matrices.
Exemple
Ø H <- array(1:20, dim=c(4,5))
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
28
Les matrices – le remplissage
Par défaut la matrice est remplie colonne par
colonne.
Pour remplir ligne par ligne, on ajoute l'argument
byrow=T
>H<-matrix(1:20,nrow=4,ncol=5, byrow=T)
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
On peut renommer les colonnes et les lignes
> colnames(H) = c(‘a’, ‘b’, ‘c‘, ’d’, ‘e’)
29
Accès aux éléments d’une matrice
H[i,j] : élément à la ième ligne et jème colonne
H[i,] : ième ligne
H[,j] : jème colonne
Exemples
> H[1,5] ------------ > 5
> H[2,] ------------- > 6 7 8 9 10
> H[,5] -------------- > 5 10 15 20
30
Manipulations des matrices
Les fonctions classiques calculent élément par
élément.
Exemple
Ø exp(H) : renvoie une matrice constituée des
éléments de l’exponentiel de chaque
élément de H.
>A+B; A*B; A-B : somme, produit,
soustraction élément par élément
31
Manipulations des matrices
> A%*%B : produit matriciel
> solve(A) : inverse de A
> solve(A,b) : solution de l’équation Ax=b
32
II.3. Liste
Une liste est une collection d’objets éventuellement
hétérogènes. Elle est définie par la commande
list(el1=, el2=, ...).
>list(c(1,2,3),c("robert","johnson"),matrix(rnorm(4),2,2)
)
[[1]]
[1] 1 2 3
[[2]]
[1] "robert" "johnson"
[[3]]
[,1] [,2]
[1,] 0.2913862 0.3303319
[2,] -1.4849716 2.4071609 33
Liste : définition
Les éléments d’une liste peuvent posséder un nom.
> list(numero = c(1,2,3), noms =
c("robert","johnson"), mat = matrix(rnorm(4),2,2))
$numero
[1] 1 2 3
$noms
[1] "robert" "johnson"
$mat
[,1] [,2]
[1,] 1.4355363 -0.8544773
[2,] 0.6386084 1.9803265
34
II.4. Facteurs
Définition
Un facteur est un vecteur de variables catégorielles.
Les niveaux du facteur peuvent être ordonnés ou
pas.
Utilisation
Les facteurs s’utilisent pour catégoriser les
données d’un vecteur (ce qui s’avère très utile
pour la gestion des variables qualitatives).
un facteur est souvent associé à d’autres
vecteurs pour en définir une partition.
35
Création, manipulation des facteurs
Création : la fonction factor
> factor(sample(1:3, 10, replace = TRUE))
[1] 3 3 1 2 1 2 3 1 1 1
Levels: 1 2 3
> factor(sample(1:3, 10, replace = TRUE), levels = 1:5)
[1] 3 1 2 2 3 2 1 2 2 1
Levels: 1 2 3 4 5
• Gestion : nlevels,levels,table
> x <- factor(sample(c("thesard", "CR", "MdC"), 15, replace = TRUE))
> cat(nlevels(x), "niveaux:", levels(x))
3 niveaux: CR MdC thesard
> table(x)
x
CR MdC thesard
4 8 3
36
Un exemple de facteur associé à un vecteur
Données
Chacun me donne son âge et son grade
> age <- c(25, 35, 32, 27, 32, 40, 26, 25, 26, 28,
30, NA, 36,30, 30)
> grd <- c("thd", "CR", "MdC", "thd", "thd", "MdC",
"MdC", "thd“, "thd", "MdC", "CR", "MdC", "CR", "thd",
"thd")
Question : nombre d’individus par catégorie ?
> table(grd)
grd
CR MdC thd
3 5 7
37
II.5. Dataframe
Définition
C’est une liste à laquelle on impose certaines
contraintes, afin de rassembler vecteurs et
facteurs sous la forme d’un tableau de
données.
Pratiquement, un dataframe est une matrice
dont les colonnes sont de mode différent,
C’est l’objet idéal pour la manipulation de
données.
38
Création de tableau de données
Syntaxe
On peut spécifier le nom des colonnes par le vecteur [Link] ou
directement comme pour une liste :
[Link](e1=,e2=,...,[Link]=)
> age <- c(25, 35, 32, 27, 32, 40, 26, 25, 26, 28, 30, NA, 36, 30, 30)
> grd <- c("thd", "CR", "MdC", "thd", "thd", "MdC", "MdC", "thd",
"thd", "MdC", "CR", "MdC", "CR", "thd", "thd")
> sex <- factor(sample(c(rep("M", 3), rep("F", 12))))
> donnees <- [Link](age = age, grade = grd, sexe = sex)
> head(donnees)
age grade sexe
1 25 thd F
2 35 CR M
3 32 MdC F
4 27 thd F
5 32 thd F
6 40 MdC F
39
Manipulation du tableau de données
Comme une liste !
les commandes attach() / detach placent / ôtent
les éléments du tableaux de données dans
l’itinéraire de recherche.
> donnees$age
[1] 25 35 32 27 32 40 26 25 26 28 30 NA 36 30
30
> attach(donnees, [Link] = FALSE)
> grade
[1] thd CR MdC thd thd MdC MdC thd thd MdC
CR MdC CR thd thd
Levels: CR MdC thd
> detach(donnees)
40
Travailler avec les tableaux de données
beaucoup de fonctions prédéfinies (by, tapply, etc.)
> summary(donnees)
age grade sexe
Min. :25.00 CR :3 F:12
1st Qu.:26.25 MdC:5 M: 3
Median :30.00 thd:7
Mean :30.14
3rd Qu.:32.00
Max. :40.00
NA's : 1.00
> attach(donnees, [Link] = FALSE)
> by(age, sexe, mean, [Link] = TRUE)
> by(age, grade, mean, [Link] = TRUE)
41
La fonction tapply
Un autre point fort de R
Utilisation
Applique une fonction sur un vecteur partitionné en
groupes.
Question : âge moyen / écart-type par catégorie ?
> tapply(age, grd, mean, [Link] = TRUE)
CR MdC thd
33.66667 31.50000 27.85714
> tapply(age, grd, sd, [Link] = TRUE)
CR MdC thd
3.214550 6.191392 2.794553
42
Chapitre 2: Langage R
43
Rappels
1. Un éditeur de texte
(vos fonctions / scripts)
2. Un terminal avec R
(tester, sourcer)
« Sourcer »
source("un_script.R") : exécute la série
de commandes de mon_script.R
source("mes_fonctions.R") : charge le
contenu (les fonctions) de
mes_fonctions.R
44
2.1. Les types de données
R manipule les types de données de base :
Numérique : numeric (integer, double)
a=1 b = 1.4
Complexe : complex
z = 1+2i
Booléen : logical
c = [Link](z)
Chaines de caractères: character
p = ‘prenom’
Les fonctions mode() ou typeof() renvoient le type
45
2.2. Structure de contrôles
Regrouper les expressions : Syntaxe
{expr_1; expr_2; ...; expr_n }
ou
{
expr_1
...
expr_n
}
Remarques sur les groupes
o La dernière valeur du groupe est retournée ;
o Un groupe d’expressions peut être passé à une fonction,
réutilisé dans une expression plus grande, etc.
46
Exécution conditionnelle : if,if/else,ifelse
Syntaxe
if (condition) {
expr_1
} else {
expr_2
}
ou
ifelse(condition, a, b)
Remarques
o condition est une valeur logique : penser à &,|,!, . . .
o le else est optionnel,
o elseif permet d’imbriquer les conditionnements.
47
Application : calcul du prix TTC
# demander le prix ht
print("saisir prix ht")
ht <- scan()
#type de produit
print("type de produit : 1 - luxe, autre -
normal")
typprod <- scan()
#calcul du prix ttc 48
#calcul du prix ttc
if (typprod == 1)
{
tva <- 0.33
} else
{
tva <- 0.196
}
#calcul
ttc <- ht * (1 + tva)
#affichage
print(paste("prix ttc = ", [Link](ttc)))
49
Exécution répétée: boucle for
Syntaxe
for (var in set) {
expr(var)
}
ou
for (var in set)
expr(var)
à fuir pour éviter les effets de bords sournois !
Remarques sur la boucle for
o var est la variable incrémentée,
o set est un vecteur définissant les valeurs
successives,
o lente comparée aux opérateurs matriciels.
50
Application : calcul de la somme
# A faire : somme S = SUM_i i^2
# saisie de n
n <- scan()
# initialisation de la somme
s <- 0.0
# boucle for
for (i in 1:n){
s <- s + i^2
}
print("la somme = ")
print(s) 51
Exécution répétée : boucles while et repeat
Syntaxe
while (condition) {
expr
}
ou
repeat {
expr
}
Remarque
o Comme pour for, éviter les imbrications sources de
lenteur.
52
Application : calcul de la somme
# A faire : somme S = SUM_i i^2
# saisie de n
n <- scan()
#initialisation de la somme et de l’indice
s <- 0.0
i <- 1
#boucle « tant que »
while (i <= n){
s <- s + i^2
i <- i + 1 }
#affichage des résultats
print("la somme = ")
53
Contrôle des boucles : break, next
Exemples d’utilisation
repeat {
expr
if (condition) {break}
}
ou
while (condition1){
expr_1
if (condition2) {next}
expr_2
}
Remarque
break est la seule manière d’interrompre une boucle
repeat.
54
3. Les fonctions
Syntaxe
nom_de_la_fonction <- function(arg1,arg2, ...) {
expression
return(var)
}
Remarques
o return peut être omis (à éviter) : dans ce cas la
dernière valeur calculée est renvoyée.
o peut être tapée directement dans l’interpréteur ou
dans un fichier externe functions.R, chargé par
source.
55
Un exemple simple
Moyenne empirique d’un vecteur
Avec suppression des valeurs manquantes !
moyenne <- function(x) {
## suppression des valeurs manquantes
[Link] <- x[]
## moyenne empirique
resultat <- sum([Link]) / length([Link])
return(resultat)
}
Tests
> moyenne(rnorm(100))
[1] 0.06792586
> moyenne(c(1, -5, 3, NA, 8.7))
[1] 1.925 56
Les arguments, leurs valeurs par défaut
Propriétés
o les arguments peuvent être passés dans le désordre
s’ils sont nommés : var=object,
o on peut définir une valeur par défaut pour n’importe
quel argument lors de la définition de la fonction :
var=10.
o en cas de sorties multiples, les sorties doivent être
renvoyées sous forme de liste.
Remarques
o Les valeurs par défaut rendent la lecture des fonctions
beaucoup plus aisée pour l’utilisateur : imposer peu
d’arguments obligatoires.
o Les noms des éléments de la liste définie dans la
fonction sont conservés à l’extérieur de la fonction.
57
Un exemple (un tout petit peu) plus avancé
Résumé numérique d’un vecteur
> resume <- function(x, [Link] = TRUE, affiche = FALSE) {
+ mu <- mean(x, [Link] = [Link])
+ s2 <- var(x, [Link] = [Link])
+ if (affiche) {
+ cat("\nMoyenne:", mu, "et variance:", s2)
+}
+ return(list(moyenne = mu, variance = s2))
+}
> out <- resume(rnorm(100))
> out$variance
[1] 0.7163688
> out <- resume(affiche = TRUE, x = rexp(100, 0.5))
Moyenne: 1.896648 et variance: 4.912842 58
Chapitre 3 : R et Statistiques
Le fichier de données utilisé dans la suite est [Link]
59