Intiation à R
Souleymane BAH
bsouleymane@[Link]
[Link]
11 octobre 2024
Mis à jour en novembre 2024
PLAN
1. Présentation de R
2. Installation R, RTools et RStudio
3. Présentation de l'interface de RStudio
4. Mon premier programme R
5. Assignation
6. Type des objets
7. Conditions
8. Boucles
9. Librairies
10. Chargement et Export de données
11. Traitement de données
12. Graphiques 2
1.1 Initiation à R : Présentation de R
• Ross Ihaka et Robert Gentleman, université d'Auckland, 1983
• Inspiré du langage S
• R : Langage de programmation objet et logiciel libre
• Utilisé en statistiques et en data science
• Multiplateforme
3
1.2 Initiation à R : Installation
Etapes
1. Installer R
[Link]
2. Installer Rtools (utilisé pour créer des paquets R à partir des sources) et
choisir les paramètres par défaut
[Link]
3: Installer RStudio
[Link]
4
1.3 Initiation à R : Présentation de l'interface de
RStudio
Scripts
Variables et
historique
Fichiers et
dossiers,
Graphiques,
Packages,
Aide
Console R
5
1.4 Initiation à R : Mon premier programme R 1/3
• Dans la console
6
1.4 Initiation à R : Mon premier programme R 2/3
• Script
7
1.4 Initiation à R : Mon premier programme R 3/3
• Script
• Enregistrer le fichier (CTRL + S)
• Mettre le curseur sur la ligne
• Cliquer sur Run
8
1.5 Initiation à R : Assignation
• "Stocker" une valeur dans une variable
• <-
• Exemple
a <- 5
b <- 3
9
1.6 Initiation à R : Type des objets 1/9
• Numérique, Caractères, Logique, Complexe
• Vecteurs, Matrices, Listes, Data Frame
• Type d’un objet : mode(variable)
10
1.6 Initiation à R : Type des objets 2/9
• numeric : nombre entier ou réel
a <- 5
mode(a)
b <- -4.3
mode(b)
11
1.6 Initiation à R : Type des objets 3/9
• character : caractères
choix <- 'o'
choix
mode(choix)
message <- "bonjour"
message
mode(message)
12
1.6 Initiation à R : Type des objets 4/9
• logical : variable booléenne qui prend la valeur Vrai (TRUE) ou Faux (FALSE)
a <- TRUE
mode(a)
b <- FALSE
mode(b)
13
1.6 Initiation à R : Type des objets 5/9
• complex : nombre complexe
# fonction complex() pour créer un nombre complexe (# : commentaire)
cplx <- complex(real = 5, imaginary = -17)
cplx
mode(cplx)
14
1.6 Initiation à R : Type des objets 6/9
• Vecteur : Eléments de même type
• Fonction c() pour concaténer les objets en un vecteur
• Exemple :
v1 <- c(1, 17, 50000)
v1
v1[2] # valeur position 2
v2 <- c(id = 1, age = 17, salaire = 50000) # Nom et valeur
v2
v2["age"] # valeur élément age
v2[2]
v3 <- c("Pomme", "Mangue", "Orange")
v3
v3[1] 15
1.6 Initiation à R : Type des objets 7/9
• Matrice : vecteur de dimension 2
• Fonction matrix()
• Exemple :
m <- matrix(c(1, 2, 3, 4, 5, 6), ncol = 3, nrow = 2, byrow = TRUE)
m[2, 3]
16
1.6 Initiation à R : Type des objets 8/9
• Liste : vecteur dont les éléments peuvent être de types différents
• Fonction list()
• Exemple :
liste1 <- list(nom = "Toto" , age = 22, enfants = c("Pierre" , "Jeanne"))
liste1
liste1$nom
liste2 <- list(nom = "Rabia" , age = 30, enfants = c("Kabirou" , "Adamou", "Rayan"))
liste2
population <- list(individu1 = liste1, individu2 = liste2) # liste de liste
population$individu2$enfants
17
1.6 Initiation à R : Type des objets 9/9
• Data Frame : tableau à 2 dimensions dont tous les éléments sont de même
longueur
• Fonction [Link]()
• Exemple :
col1 <- c("Déreck" , "Walid" , "Siméon")
col2 <- c(2000, 1988, 2008)
df <- [Link](col1, col2)
df
df$col1
# Ajout d’en-tête
colnames(df) <- c("Nom","Année")
df
df$Nom
18
1.7 Initiation à R : Conditions
• Syntaxe
if (condition1) {
traitements 1
} else if (condition2) {
• Exercice
Mettre une valeur dans a et b, variables
traitements 2
Comparer a et b (condition) et Afficher le message print(" ") :
} else if (condition3) {
a est plus grand que b, sinon
traitements 3
a est plus petit que b, sinon
…
a et b sont égaux
} else {
traitements n
}
• Condition
• Egalité : a == b (et non a = b)
• Différence : a != b
• Supérieur : a > b ; Supérieur ou égal : a >= b
• Inférieur : a < b ; Inférieur ou égal : a <= b
19
1.7 Initiation à R : Conditions
• Syntaxe
if (condition1) { • Correction
traitement1 # Changer les valeurs de a et b
} else if (condition2) { a <- 5
traitement2 b <- 3
} else { if (a > b) {
traitement_n print("a est plus grand que b")
} } else if (a < b) {
• Egalité : a == b (et non a = b) print("a est plus petit que b")
• Différence : a != b } else {
• Supérieur : a > b ; Supérieur ou égal : print("a et b sont égaux")
a >= b
• Inférieur : a < b ; Inférieur ou égal : a }
<= b
20
1.8 Initiation à R : Boucles (for)
• Syntaxe for (nombre de fois connu) • Pratique for
for (variable in liste) { Afficher les nombres de 1 à 50
traitements
Astuce, liste <- 1:50
}
21
1.8 Initiation à R : Boucles (for)
• Syntaxe for (nombre de fois connu) • Correction for
for (variable in liste) { liste <- 1:50
traitements
for (i in liste) {
}
print(i)
}
22
1.8 Initiation à R : Boucles (while)
• Syntaxe while (tant que condition remplie) • Pratique while
while (condition) { Afficher les nombres de 1 à 50
traitements
Astuces :
}
Boucles infinies (clic sur STOP) initialiser au préalable
afficher
incrémenter
i <- i + 1
ou décrémenter
i <- i - 1
23
1.8 Initiation à R : Boucles (while)
• Syntaxe while (tant que condition remplie) • Correction while
while (condition) { i <- 1
traitements
while (i <= 50) {
}
print (i)
i <- i + 1
}
24
1.9 Initiation à R : Librairies
• Package : fonctions, de jeux de données et documentation
• Installer un package
[Link]("nom_package")
• Charger un package
library(nom_package)
• Exercice : Installer puis charger le package "caret" utilisé en Machine Learning
25
1.9 Initiation à R : Librairies
• Package : fonctions, de jeux de données et documentation
• Installer un package
[Link]("nom_package")
• Charger un package
library(nom_package)
• Solution :
• Installer le package "caret" : [Link]("caret")
• Charger le package "caret" : library(caret)
26
1.10.1 Initiation à R : Chargement de données
• Fichier CSV : fonction [Link]()
• Syntaxe
df = [Link]("chemin_vers_fichier", header=TRUE|FALSE, sep='séparateur', dec='décimale')
• Pour plus de commodités, sélection du répertoire actif
base::setwd("répertoire_de_base") # séparateur \\ Windows et / Linux
• Exemple : Télécharger le fichier [Link]
[Link]
base::setwd("C:\\SCRIPTS_R") # Adapter au besoin
# Concentrations CO2 du 10-17 mars 2024, Observatoire Mauna Loa, Hawai
# Décimale : .
df <- [Link]("[Link]", header=TRUE, sep=',', dec='.')
df
df$CO2
• Autre librairie : readxl pour fichiers Excel 27
1.10.1 Initiation à R : Export de données
• Fichier CSV : fonction [Link]()
• Syntaxe
[Link](df, file = "chemin_vers_fichier", [Link]=TRUE|FALSE)
• Pour plus de commodités, sélection du répertoire actif
base::setwd("répertoire_de_base") # séparateur \\ Windows et / Linux
• Exemple
col1 <- c("Dereck" , "Walid" , "Simeon")
col2 <- c(183.3, 150, 160.2)
df <- [Link](col1, col2)
colnames(df) <- c("Nom","Taille")
df
base::setwd("C:\\SCRIPTS_R") # Adapter au besoin
# Sans nom lignes (numéros lignes par exemple)
[Link](df, file = "mon_fichier.csv", [Link] = FALSE)
• Autre librairie : writexl pour fichiers Excel
28
1.11 Initiation à R : Traitement de données
• Moyenne : mean(variable)
• Minimum : min(variable)
• Maximum : max(variable)
• Autres : Variance → var(), Ecart-type →sd(), …
• Exemple :
col1 <- c("Déreck" , "Walid" , "Siméon")
col2 <- c(183.3, 150, 160.2)
df <- [Link](col1, col2) # exemple précédent
colnames(df) <- c("Nom","Taille")
df$Taille
moy <- mean(df$Taille)
moy 29
1.12 Initiation à R : Graphiques 1/3
• Découpage de la zone de dessin en x lignes et y colonnes
• par(mfrow=c(x,y))
• Nuage de points : données d'abcisse x et d'ordonnéey
• plot(x,y)
• Légende
• title(main = "Titre", xlab = "Nom Abcisse", ylab="Nom Ordonnée")
• Courbe
• curve(fonction, from = valeur_début, to=valeur_fin)
• Autres fonctions :
• boxplot() → boîte à moustache
• hist() → histogramme
• ...
• Aide : help(fonction)
• Exemple : help(plot) 30
1.12 Initiation à R : Graphiques 2/3
Exemple
# Données (tailles populations)
pop1 <- c(183.3, 150, 160.2)
pop2 <- c(103.3, 75.2, 85)
pop3 <- c(153.3, 200, 25.32)
pop4 <- c(202.1, 100.2, 150)
# Découpage de la zone de dessin en 1 lignes et 2 colonnes
par(mfrow=c(1, 2))
# Boîte à moustache et légendes
boxplot(pop1, pop2, names = c("Population 1", "Population 2"))
title(main = "Population 1 vs Population 2" , xlab = "Population" , ylab="Taille")
boxplot(pop3, pop4, names = c("Population 3", "Population 4"))
title(main = "Population 3 vs Population 4" , xlab = "Population" , ylab="Taille") 31
1.12 Initiation à R : Graphiques 3/3
• Export du graphique
32
3. Ressources
• Introduction à la programmation en R
[Link]
[Link]/doc/contrib/Goulet_introduction_programmation_R.pdf
33