STRUCTURES DE DONNÉES DANS R
MODULE 2
MODULE 2
MODULE 2
MODULE 2
21
Tableaux et Matrices
Tableaux et Matrices
Tableaux et Matrices
Tableaux et Matrices
Tableaux et Matrices
Tableaux et Matrices
Tableaux et Matrices
Tableaux et Matrices
• Un tableau est une structure qui contient des données du même type
(Caractères, Chaînes de caractères, Nombres).
• Un tableau peut être multidimensionnel (lignes et colonnes multiples).
• Pour créer un tableau il faut commencer par créer un vecteur:
movies <- c ("Akira", "Toy Story" , "Room" , "The Wave", "Whiplash",
"Star Wars", "The Ring" , "The Artist", "Jumanji")
"Star Wars", "The Ring" , "The Artist", "Jumanji")
• On utilise ensuite la fonction array où le premier argument est
le
vecteur déjà créé et le deuxième argument est un vecteur spécifiant les
dimensions du tableau
movies_array <- array (movies, dim = c (4, 3))
TABLEAUX ET MATRICES
22
[, 1]
"Akira"
"Toy Story"
"Room"
"The Wave"
[1,]
[2,]
[3,]
[4,]
Tableaux
[, 2]
"Whiplash"
"Star Wars"
"The Ring"
"The Artist"
[, 3]
"Jumanji"
"Akira"
"Toy Story"
"Room"
• Les éléments se répètent à partir de la 3ème colonne et 2ème ligne (Le
• Les éléments se répètent à partir de la 3
ligne (Le
vecteur d’origine ne contient que 9 éléments alors que le tableau peut
contenir 12 éléments)
colonne et 2
• L’accès à un élément se fait par son indice (ex: Star Wars se trouve à
2ème ligne et 2ème colonne)
movies [2, 2]
[1] "Star Wars"
TABLEAUX ET MATRICES
23
[, 1]
"Akira"
"Toy Story"
"Room"
"The Wave"
[1,]
[2,]
[3,]
[4,]
Tableaux
[, 2]
"Whiplash"
"Star Wars"
"The Ring"
"The Artist"
[, 3]
"Jumanji"
"Akira"
"Toy Story"
"Room"
• On peut extraire toute une ligne en spécifiant l’indice de la ligne et en
• On peut extraire toute une ligne en spécifiant l’indice de la ligne et en
laissant celui de la colonne vide
movies [1,]
[1] "Akira" "Whiplash" "Jumanji"
• On peut aussi extraire toute une colonne en laissant vide l’indice de la
ligne et en indiquant l’indice de la colonne souhaitée
movies [,2]
[1] "Whiplash" "Star Wars" "The Ring" "The Artist"
TABLEAUX ET MATRICES
24
Matrices
• La structure d’une matrice est similaire à celle d’un tableau sauf qu’une
matrice ne peut être que bidimensionnelle.
• On utilise la fonction matrix en passant trois arguments: le premier est
le vecteur contenant les éléments de la matrice, le 2ème est le nombre
de lignes et le 3ème est le nombre de colonnes.
movies <- c ("Akira", "Toy Story" , "Room" , "The Wave", "Whiplash",
"Star Wars", "The Ring" , "The Artist", "Jumanji")
"Star Wars", "The Ring" , "The Artist", "Jumanji")
movies_matrix <- matrix (movies, nrow = 3, ncol = 3)
• Par défaut, la matrice est organisée en colonnes
[1,]
[2,]
[3,]
[, 1]
"Akira"
[, 2]
[, 3]
"The Wave"
Publicité
"The Ring"
"Toy Story"
"Whiplash"
"The Artist"
"Room"
"Star Wars"
"Jumanji"
TABLEAUX ET MATRICES
25
Matrices
• Pour organiser une matrice par lignes, il faut ajouter l’argument byrow à
l’appel de la fonction matrix et lui affecter la valeur TRUE
movies_matrix <- matrix (movies, nrow = 3, ncol = 3 , byrow = TRUE)
[1,]
[2,]
[3,]
[, 1]
"Akira"
[, 2]
[, 3]
"Toy Story"
"Room"
"The Wave"
"Whiplash"
"Star Wars"
"The Ring"
"The Artist"
"Jumanji"
TABLEAUX ET MATRICES
26
Matrices
• On peut accéder à des sous ensembles de la matrices en utilisant les
notations appropriées. Le code suivant extrait les lignes 2 et 3 ainsi que
les colonnes 1 et 2
movies_matrix [2:3, 1:2]
[, 1]
[, 1]
[, 2]
[, 2]
[1,]
[2,]
"Toy Story"
"Whiplash"
"Room"
"Star Wars"
TABLEAUX ET MATRICES
27
Listes
Listes
Listes
Listes
Listes
Listes
Listes
Listes
• Les Listes en sont des collections d’objets tout comme les vecteurs.
• Contrairement aux vecteurs, les éléments dans une liste peuvent être
de types différents.
• Considérons le code suivant :
movie <- list ("Toy Story", 1995, c ("Animation", "Adventure", "Comedy"))
[[1]]
[[1]]
[1] "Toy Story"
[[2]]
[1] 1995
[[3]]
[1] "Animation", "Adventure", "Comedy"
On utilise la fonction list et on spécifie les élément que l’on veut inclure.
• Notez que le 1er élément est une chaîne de caractère, le 2ème est une
valeur numérique et le 3ème est un vecteur.
LISTES
28
Accès aux élément d’une liste
• Pour accéder à un élément on peut utiliser son indice:
movie [2]
[[1]]
[1] 1995
• Pour accéder à une séquence d’éléments, il suffit d’indiquer entre les
crochets l’indice de début et celui de fin
movie [2:3]
[[1]]
[1] 1995
[[2]]
[1] "Animation", "Adventure", "Comedy"
LISTES
29
Listes nommées
• On peut associer un nom à chaque élément de la liste.
movie <- list (name = "Toy Story",
year = 1995,
genre = c ("Animation", "Adventure", "Comedy"))
$name
[1] "Toy Story"
$year
$year
[1] 1995
$genre
[1] "Animation", "Adventure", "Comedy"
• Cela permet d’améliorer l’organisation des listes et rend les choses plus
lisibles
LISTES
30
Accès aux éléments des listes nommées
• Pour accéder aux aux éléments d’une liste par leurs nomsn on utilise le
symbole $ suivit du nom de l’élément souhaité.
movie$genre
[1] "Animation", "Adventure", "Comedy"
• On peut aussi fournir le nom de l’élément entre crochets
movie["genre"]
movie["genre"]
Publicité
$genre
[1] "Animation", "Adventure", "Comedy"
LISTES
31
Ajout d’éléments à une liste
• Ajout d’un élément en utilisant l’opérateur d’affectation de variables <-
et en spécifiant le nom du nouvel élément entre crochets
movie["age"] <- 5 # l’élément est ajouté à la dernière position dans la liste
$name
[1] "Toy Story"
$year
[1] 1995
[1] 1995
$genre
[1] "Animation", "Adventure", "Comedy"
$age
[1] 5
LISTES
32
Modification de la valeur d’un élément
• Pour modifier la valeur d’un élément dans une liste, utiliser l’opérateur
d’affectation de variables <- pour modifier un élément existant
movie["age"] <- 6 # modifier le contenu de l’élément age
$name
[1] "Toy Story"
$year
[1] 1995
[1] 1995
$genre
[1] "Animation", "Adventure", "Comedy"
$age
[1] 6
LISTES
33
Suppression d’éléments d’une liste
• Pour supprimer un élément d’une liste, il suffit de lui affecter la valeur
NULL
movie["age"] <- NULL # Suppression de l’élément age
$name
[1] "Toy Story"
$year
[1] 1995
[1] 1995
$genre
[1] "Animation", "Adventure", "Comedy"
LISTES
34
Data Frames
Data Frames
Data Frames
Data Frames
Data Frames
Data Frames
Data Frames
Data Frames
• Un data frame est une structure contenant des informations corrélées.
• Une data frame est une très bonne structure pour contenir des titres de
films avant, pour chacun, l’année de sortie à l’écran correspondante.
name
1 Toy Story
2 Akira
2 Akira
3 The Breakfast Club
4 The Artist
5 Modern Times
6 Fight Club
7 City of God
8 The Untouchables
year
1995
1998
1998
1985
2011
1936
1999
2002
1987
DATA FRAMES
35
Création d’un data frame
• On utilise la fonction data.frame, chaque argument est un vecteur
représentant une des colonnes du data frame.
• Les éléments de chaque vecteur doivent être du même type. Dans
l’exemple ci-dessous, nous avons un vecteur avec des nombres et un
autre avec des chaînes de caractères.
movies <- data.frame (name = c("Toy Story", "Akira", "The Breakfast Club", "The Artist",
movies <- data.frame (name = c("Toy Story", "Akira", "The Breakfast Club", "The Artist",
"Modern Times", "Fight Club", « City of God",
"The Untouchables"),
year = c(1995, 1998, 1985, 2011, 1936, 1999, 2002, 1987),
stringsAsFactors=F)
DATA FRAMES
36
Accès au data frames
• Les variables d’un data frame sont accessible en utilisant le signe $.
movies$name
[1] Toy Story Akira The Breakfast Club The Artist
[5] Modern Times Fight Club City of God
The Untouchables
• On peut accéder à une colonne en indiquant le numéro de la colonne
entre crochets. Le code de l’exemple suivant retourne la première
colonne du data frame à savoir les noms de films
movies[1]
• On peut aussi accéder aux éléments individuellement en indiquant le
numéro de ligne et de colonne de l’élément entre crochets
movies[1, 2]
[1] 1995
DATA FRAMES
37
Publicité
Structure d’un data frame
• Pour obtenir de l’information sur la structure d’un data frame, il suffit de
passer le data frame comme argument à la fonction str.
• On obtient en sortie le nombre d’objets et de variables ainsi que le type
et le contenu des variables.
str(movies)
'data.frame‘: 8 obs. of 2 variables:
$ name: chr "Toy Story" "Akira" "The Breakfast Club" "The Artist" …
$ name: chr "Toy Story" "Akira" "The Breakfast Club" "The Artist" …
$ year: num 1995 1998 1985 2011 1936 …
DATA FRAMES
38
Head and Tail
• Les fonction head et tail peuvent être utilisées pour voir le début et la fin
d’un data frame.
• La fonction head affiche les 6 premiers éléments
• La fonction tail montre les 6 derniers éléments
head(movies)
name
name
1 Toy Story
2 Akira
3 The Breakfast Club
4 The Artist
5 Modern Times
6 Fight Club
year
year
1995
1998
1985
2011
1936
1999
tail(movies)
name
name
3 The Breakfast Club
4 The Artist
5 Modern Times
6 Fight Club
7 City of God
8 The Untouchables
year
year
1985
2011
1936
1999
2002
1987
DATA FRAMES
39
Insertion de colonnes
• Pour insérer une colonne dans un data frame, il suffit de spécifier le
nom de la colonne entre crochets et de lui affecter un vecteur contenant
les valeurs de la colonne.
movies['length'] <- c(81, 125, 97, 100, 87, 139, 130, 119)
name
Toy Story
Toy Story
Akira
The Breakfast Club
The Artist
Modern Times
Fight Club
City of God
The Untouchables
1
1
2
3
4
5
6
7
8
year
1995
1995
1998
1985
2011
1936
1999
2002
1987
length
81
81
125
97
100
87
139
130
119
DATA FRAMES
40
Insertion de lignes
• Pour insérer une nouvelle ligne, nous avons besoin d’utiliser la fonction
rbind. Les arguments sont le data frame lui même ainsi qu’un vecteur
les valeurs de toutes les colonnes.
movies <- rbind (movies, c(name="Dr. Strangelove", year=1964, length=94))
name
Toy Story
Akira
The Breakfast Club
The Artist
Modern Times
Publicité
Fight Club
City of God
The Untouchables
Dr. Strangelove
1
2
3
4
5
6
7
8
9
year
1995
1998
1985
2011
1936
1999
2002
1987
1964
length
81
125
97
100
87
139
130
119
94
DATA FRAMES
41
Suppression de lignes
• Pour supprimer la ligne numéro n d’un data frame, il suffit d’indiquer –n
entre crochets, laisser le numéro de la colonne vide et mettre à jour le
data frame par l’opérateur <-. Exemple : suppression de la 9ème ligne
movies <- movies [-9,]
name
Toy Story
Toy Story
Akira
The Breakfast Club
The Artist
Modern Times
Fight Club
City of God
The Untouchables
1
1
2
3
4
5
6
7
8
year
1995
1995
1998
1985
2011
1936
1999
2002
1987
length
81
81
125
97
100
87
139
130
119
DATA FRAMES
42
Suppression de colonnes
• Pour supprimer une colonne d’un data frame, il suffit de lui affecter la
valeur NULL.
movies <- movies ["length"] = NULL
name
1 Toy Story
2 Akira
3 The Breakfast Club
4 The Artist
5 Modern Times
6 Fight Club
7 City of God
8 The Untouchables
year
1995
1998
1985
2011
1936
1999
2002
1987
DATA FRAMES
43