Académique Documents
Professionnel Documents
Culture Documents
tp2 PDF
tp2 PDF
1 Les matrices
On définit une matrice à l’aide de la fonction matrix. Les options ncol et nrow per-
mettent de définir les dimensions de la matrice.
Example
Pour connaître les dimensions d’une matrice, on utilise la fonction dim (la fonction
length retourne le nombre d’éléments de la matrice) :
> dim(M)
23
> length(M)
6
On a aussi la possibilité d’attribuer des noms aux lignes et aux colonnes d’une matrice
via l’option dimnames (ces noms doivent être de type character ).
Olfa Selmi 1
Probablités et Statistiques LF2Info
a Extraction
Pour extraire des éléments d’une matrice X, on peut utiliser deux approches, chacune
ayant une syntaxe propre.
1. L’extraction par indice : Xrindl , indc s, où indl désigne le vecteur des indices des
lignes et indc désigne le vecteur des indices des colonnes à extraire. L’omission de
indl (respectivement de indc ) signifie que l’on sélectionne toutes les lignes (respec-
tivement les colonnes).
Notons également que l’on peut faire précéder indl et/ou indc du signe moins (-)
pour indiquer plutôt les éléments à ne pas extraire.
2. L’extraction par masque logique : Xrmasques, où masque est une matrice de logiques
TRUE/FALSE de la même taille que X indiquant quels éléments extraire.
Example
Voici quelques exemples utilisant la première approche :
> Mat <- matrix(1 :12,nrow=4,ncol=3,byrow=TRUE)
> Mat
> Mat[2,3]
( Extraction de l’élément à l’intersection ligne 2/colonne 3.)
> Mat[,1]
( On prend toutes les lignes, et seulement la colonne 1).
> Mat[c(1,4),]
(On prend toutes les colonnes, et les lignes 1 et 4).
> Mat[3,-c(1,3)]
( On prend la ligne 3 et la colonne 2).
Exemple
la fonction which() permet de récupérer les indices des éléments de la matrice qui
vérifient une certaine condition. Exemple
Olfa Selmi 2
Probablités et Statistiques LF2Info
1.2 Insertion
On peut rajouter des lignes (fonction rbind) ou des colonnes (fonction cbind) à une
matrice existante ( concaténer des matrices).
Exemple
Que donnent les instructions suivantes ?
> cbind(M, c(7, 7))
> rbind(M, c(8, 8, 8))
> cbind(M, M)
L’insertion d’éléments procède de la même manière que dans le cas vectoriel. Il faut utiliser
le symbole d’affectation <- pour remplacer des éléments, sélectionnés soit au moyen de
leurs indices, soit par masque logique, par d’autres éléments.
Exemple
Exécuter les instructions suivantes et conclure
>m
> m[m !=2] <- 0
>m
> Mat <- Mat[-4,]
> Mat
m[Mat>7] <- Mat[Mat>7]
>m
Olfa Selmi 3
Probablités et Statistiques LF2Info
2 Les tableaux
La fonction array() permet de créer des matrices multidimensionnelles à plus de deux
dimensions comme cela est illustré sur la figure suivante (pour un array ayant trois di-
mensions).
Olfa Selmi 4
Probablités et Statistiques LF2Info
3 Les listes
La structure du langage R la plus souple et à la fois la plus riche est celle de la liste.
Contrairement aux structures précédentes, les listes permettent de regrouper dans une
même structure des données de types différents sans pour autant les altérer. De façon
générale, chaque élément d’une liste peut ainsi être un vecteur, une matrice, un array ou
même une liste.
Example
Vérifier que donne les instructions suivantes :
Instruction 1 :
3.1 Extraction
L’extraction dans les listes est légèrement plus compliquée que dans les matrices.
Chaque élément d’une liste est en effet lui-même une liste. L’utilisation de la fonction
"["() sur une liste renvoie donc une autre liste.
Exemple
Conclure à partir des résultats des instructions suivantes :
L <- list(12,c(34,67,8),Mat,1 :15,list(10,11))
> class(L)
>L
> L[2]
Olfa Selmi 5
Probablités et Statistiques LF2Info
> class(L[2])
> L[c(3,4)]
Puisqu’une liste est faite pour stocker des éléments de nature différente, il faudra utili-
ser la fonction "[["() pour accéder au contenu des éléments d’une liste.
Essayer les instructions suivantes et conclure
> L[[2]]
> "[["(L,2)
> class(L[[2]])
> L[[5]][[2]]
> L[[2,3]] ?
Commenter.
Remarque: R définit ce que l’on appelle l’indexation récursive. Ainsi, l’instruction sui-
vante commence par récupérer le contenu du deuxième élément de la liste L (c’est-à-dire
le vecteur c(34,67,8)), puis extrait le troisième élément de ce vecteur.
> L[[c(2,3)]]
( Indexation récursive.)
8
3.2 Insertion
Olfa Selmi 6
Probablités et Statistiques LF2Info
sur ces derniers. Chaque colonne représente une variable particulière dont tous les éléments
sont du même type. Les colonnes de la matrice-données peuvent étre nommées.
Exemple
> IMC <- data.frame(Sexe=c("H","F","H","F","H","F"),
+ Taille=c(1.83,1.76,1.82,1.60,1.90,1.66),
+ Poids=c(67,58,66,48,75,55),
+ row.names=c("ind1","ind2","ind3","ind4","ind5","ind6"))
> IMC
> is.data.frame(IMC)
> is.list(IMC)
Remarque:
‚ La fonction str() permet d’afficher la structure de chacune des colonnes d’un data.frame.
‚ Les data.frame peuvent être vus comme des listes de vecteurs de même longueur. Cela
est d’autant plus vrai que c’est de cette façon que R structure dans son fonctionne-
ment interne un data.frame.
Exemple
> var1<-c("a","b","a","fi","jk")
> var2<-c(5,8,9,1,3)
> tab<-data.frame(var1,var2)
> class(tab)
"data.frame"
> is.list(tab)
TRUE
> is.data.frame(tab)
TRUE
> tab
Un tableau conserve le nom des vecteurs, dans notre cas var1 et var2. Il est possible de
donner des noms aux lignes avec l’option row.names qui doit fournir un vecteur de type
caractère et de longueur égale au nombre de lignes du tableau de données.
Exemple
> var1<-c("a","b","a","fi","jk")
> var2<-c(0.25,0.35,0.15,0.25,0.3)
> tab<-data.frame(tabA = var1,tabB = var2,row.names= c("ind1","ind2","ind3","ind4","ind5"))
> tab
Un tableau étant par définition une liste particulière, il est possible d’accèder aux élé-
ments d’un tableau avec les doubles crochets [[]], ou avec le $ en utilisant les noms de
colonnes. La commande attach permet d’utiliser les noms des variables du tableau sans
rappeler le tableau auxquelles elles appartiennent. On utilise la commande detach pour
annuler le attach.
Exemple
> tabB
Erreur : objet ’tabB’ introuvable
> attach(tab)
Olfa Selmi 7
Probablités et Statistiques LF2Info
> tabB
0.25 0.35 0.15 0.25 0.30
4.1 Opérations
Il est souvent très utile de pouvoir combiner (fusionner) plusieurs data.frames. Les fonc-
tions de base permettant d’obtenir ce résultat sont tout comme pour les matrices cbind()
pour la fusion des colonnes et rbind() pour la fusion des lignes.
Toutefois, cette fonction n’est pas optimale, comme on va le voir sur l’exemple suivant.
Essayons de réunir (combiner) en colonnes les deux tables suivantes.
Remarque: Il est bien évidemment possible de mettre des facteurs dans un data.frame.
R indique les différents niveaux (levels) du facteur. La fonction factor() est donc celle à
utiliser pour stocker des variables qualitatives. Pour les variables ordinales, il est plutôt
conseillé d’utiliser la fonction ordered() :
Olfa Selmi 8
Probablités et Statistiques LF2Info
Exemple
Si vous partez d’une variable déjà structurée en factor telle que celle ci :
> fumeur <- as.factor(c("Fumeur","NonFumeur","NonFumeur", "Fumeur","NonFumeur","Fumeur","NonF
"Fumeur","NonFumeur","NonFumeur"))
> fumeur
Fumeur NonFumeur NonFumeur Fumeur NonFumeur
Fumeur NonFumeur Fumeur NonFumeur NonFumeur
Levels : Fumeur NonFumeur
6 Les dates
R permet de structurer les données constituées par des dates, au moyen de la fonction
as.Date().
Exemple
> dates <- c("27/02/92","27/02/92","14/01/92","28/02/92","01/02/92")
> dates <- as.Date(dates, "%d/%m/%y")
> dates
"1992-02-27" "1992-02-27" "1992-01-14" "1992-02-28"
"1992-02-01"
> class(dates)
"Date"
Remarque: Dans R, il existe deux fonctions permettant d’afficher la date courante :
Sys.time() et date().
Exercice 4 Un échantillon de dossiers d’enfants a été saisi. Ce sont des enfants vus lors
d’une visite en première section de maternelle dans une école. L’échantillon présenté ici
est constitué de dix enfants âgés de 3 ou 4 ans.
Les données disponibles pour chaque enfant sont :
— le sexe : F pour fille et M pour garçons ;
— l’âge en annaes et en mois à la date de la visite (deux variables, une pour le nombre
d’années et une pour le nombre de mois) ;
— le poids en kg arrondi à 100 g près ;
— la taille en cm arrondie à 0,5 cm près.
Prénom Sarra Yasmine Ahmed lili Mohamed Haroun Adam Khalil Ali Yassine
Sexe F F M F M M M M M M
Poids 16 14 13.5 15.4 16.5 16 17 14.8 17 16.7
An 3 3 3 4 3 4 3 3 4 3
Mois 5 10 5 0 8 0 11 9 1 3
Taille 100.0 97.0 95.5 101.0 100.0 98.5 103.0 98.0 101.5 100.0
Olfa Selmi 9
Probablités et Statistiques LF2Info
Olfa Selmi 10