Vous êtes sur la page 1sur 23

STRUCTURES DE DONNÉES DANS R

MODULE 2

21
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")

• 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
Tableaux

[, 1] [, 2] [, 3]
[1,] "Akira" "Whiplash" "Jumanji"
[2,] "Toy Story" "Star Wars" "Akira"
[3,] "Room" "The Ring" "Toy Story"
[4,] "The Wave" "The Artist" "Room"

• Les éléments se répètent à partir de la 3ème colonne et 2ème ligne (Le


vecteur d’origine ne contient que 9 éléments alors que le tableau peut
contenir 12 éléments)
• 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
Tableaux

[, 1] [, 2] [, 3]
[1,] "Akira" "Whiplash" "Jumanji"
[2,] "Toy Story" "Star Wars" "Akira"
[3,] "Room" "The Ring" "Toy Story"
[4,] "The Wave" "The Artist" "Room"

• 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")
movies_matrix <- matrix (movies, nrow = 3, ncol = 3)

• Par défaut, la matrice est organisée en colonnes


[, 1] [, 2] [, 3]
[1,] "Akira" "The Wave" "The Ring"
[2,] "Toy Story" "Whiplash" "The Artist"
[3,] "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" "Toy Story" "Room"
[2,] "The Wave" "Whiplash" "Star Wars"
[3,] "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] [, 2]
[1,] "Toy Story" "Whiplash"
[2,] "Room" "Star Wars"

TABLEAUX ET MATRICES 27
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] "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
[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"]
$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
$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
$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
$genre
[1] "Animation", "Adventure", "Comedy"

LISTES 34
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 year
1 Toy Story 1995
2 Akira 1998
3 The Breakfast Club 1985
4 The Artist 2011
5 Modern Times 1936
6 Fight Club 1999
7 City of God 2002
8 The Untouchables 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",
"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
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" …
$ 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) tail(movies)
name year name year
1 Toy Story 1995 3 The Breakfast Club 1985
2 Akira 1998 4 The Artist 2011
3 The Breakfast Club 1985 5 Modern Times 1936
4 The Artist 2011 6 Fight Club 1999
5 Modern Times 1936 7 City of God 2002
6 Fight Club 1999 8 The Untouchables 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 year length


1 Toy Story 1995 81
2 Akira 1998 125
3 The Breakfast Club 1985 97
4 The Artist 2011 100
5 Modern Times 1936 87
6 Fight Club 1999 139
7 City of God 2002 130
8 The Untouchables 1987 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 year length


1 Toy Story 1995 81
2 Akira 1998 125
3 The Breakfast Club 1985 97
4 The Artist 2011 100
5 Modern Times 1936 87
6 Fight Club 1999 139
7 City of God 2002 130
8 The Untouchables 1987 119
9 Dr. Strangelove 1964 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 year length


1 Toy Story 1995 81
2 Akira 1998 125
3 The Breakfast Club 1985 97
4 The Artist 2011 100
5 Modern Times 1936 87
6 Fight Club 1999 139
7 City of God 2002 130
8 The Untouchables 1987 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 year
1 Toy Story 1995
2 Akira 1998
3 The Breakfast Club 1985
4 The Artist 2011
5 Modern Times 1936
6 Fight Club 1999
7 City of God 2002
8 The Untouchables 1987

DATA FRAMES 43