110
Le logiciel R - Maˆ ıtriser le langage
Astuce
Il se trouve qu’une matrice est stock´ ee dans R sous la forme d’un
long vecteur, empilement de toutes les colonnes de cette matrice les unes
sur les autres. Essayez par exemple la commande as.vector(Mat). On
peut donc extraire des ´ el´ ements d’une matrice sans utiliser la forme
[lignes,colonnes], mais en utilisant l’extraction vectorielle [ind] o` u ind
est le vecteur des indices (ou bien un vecteur de logiques) des ´ el´ ements ` a
extraire de la grande colonne ainsi constitu´ ee.
> ind
[1] 2 4 6 8 3
> Mat[ind]
[1] 4 10 5 11 7
Attention
Le fonctionnement de la fonction "["() m` ene parfois ` a un changement
de la structure de l’objet manipul´ e. Voyons ceci sur l’exemple ci-dessous.
> m <- matrix(1:6,nrow=2) ; m
[,1] [,2] [,3]
[1,]
1
3
5
[2,]
2
4
6
> m[,1]
[1] 1 2
> class(m[,1])
[1] "integer"
On constate que l’extraction a transform´ e le r´ esultat en simple vecteur
(ligne), ce qui peut ˆ etre gˆ enant puisqu’ici on pouvait s’attendre ` a obtenir
une matrice colonne. Mais il existe une solution ` a ce probl` eme comme le
d´ emontre le code suivant.
> m[,1,drop=FALSE]
[,1]
[1,]
1
[2,]
2
Précédent

- 144/701

Suivant