Structures de Données dans R

Programming in R · course

Voir tous les documents en programmation

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