A <- matrix(c(1,2,3,
           2,1,-1,
           -3,-1,1),nrow=3)
A     [,1] [,2] [,3]
[1,]    1    2   -3
[2,]    2    1   -1
[3,]    3   -1    1Les matrices sont, comme en mathématiques, des tableaux de données. Attention, comme pour les vecteurs les matrices ne contiendront que des éléments du même type (numérique, texte, booléen).
Toutes les commandes seront enregistrées dans un fichier script nommé TD2.R.
matrix().A <- matrix(c(1,2,3,
           2,1,-1,
           -3,-1,1),nrow=3)
A     [,1] [,2] [,3]
[1,]    1    2   -3
[2,]    2    1   -1
[3,]    3   -1    1diag().B <- diag(x=c(1,2,3))
B     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    2    0
[3,]    0    0    3dim().dim(A)[1] 3 3Le résultat est un vecteur ayant deux éléments : le nombre de lignes et le nombre de colonnes.
A[1,2][1] 2# première ligne de A 
A[1,][1]  1  2 -3# première colonne de A
A[,1][1] 1 2 3A[1,1] <- -1
A     [,1] [,2] [,3]
[1,]   -1    2   -3
[2,]    2    1   -1
[3,]    3   -1    1A[2,] <- c(-10,-20,-30)
A     [,1] [,2] [,3]
[1,]   -1    2   -3
[2,]  -10  -20  -30
[3,]    3   -1    1A[1:2,3] <- c(1000,2000)
A     [,1] [,2] [,3]
[1,]   -1    2 1000
[2,]  -10  -20 2000
[3,]    3   -1    1A1 <- matrix(c(1,1,1,
                -1,-1,-1,
                2,2,2),nrow = 3)
A1     [,1] [,2] [,3]
[1,]    1   -1    2
[2,]    1   -1    2
[3,]    1   -1    2A2 <- matrix(c(1,2,3,
               4,5,6,
               7,8,9),nrow = 3,byrow = TRUE)
A2     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9A1+A2     [,1] [,2] [,3]
[1,]    2    1    5
[2,]    5    4    8
[3,]    8    7   11A1*A2     [,1] [,2] [,3]
[1,]    1   -2    6
[2,]    4   -5   12
[3,]    7   -8   18A1^A2     [,1] [,2] [,3]
[1,]    1    1    8
[2,]    1   -1   64
[3,]    1    1  512t().t(A1)     [,1] [,2] [,3]
[1,]    1    1    1
[2,]   -1   -1   -1
[3,]    2    2    2%*%.A1%*%A2     [,1] [,2] [,3]
[1,]   11   13   15
[2,]   11   13   15
[3,]   11   13   15colSums() et rowSums() permettent de calculer la somme sur les colonnes et sur les lignes d’une matrice.colSums(A1)[1]  3 -3  6rowSums(A1)[1] 2 2 2B==0      [,1]  [,2]  [,3]
[1,] FALSE  TRUE  TRUE
[2,]  TRUE FALSE  TRUE
[3,]  TRUE  TRUE FALSErunif().set.seed(6351) # Initialisation de la graine pour les nombres pseudo-aléatoires
fillmat <- runif(250,0,10)colnames()).Mesures <- matrix(fillmat,nrow = 50)
colnames(Mesures) <- paste("Mesure",1:5,sep="")sample()). On interprétera Groupe comme le groupe d’appartenance des 50 lignes de Mesures. Ajouter cette colonne à la matrice Mesures.Groupe <- sample(x=1:5,size=50,replace = TRUE)
Mesures <- cbind(Mesures,Groupe)sum(Mesures[,6] ==2)
sum(Mesures[,"Groupe"]==2) # Autre possibilité car les colonnes sont nomméeswhich(Mesures[,"Groupe"]==2)Mesures[which(Mesures[,"Groupe"]==2),]sum(Mesures[,-6] <5)  # On retire ici la 6ème colonne, i.e. la colonne Groupemean(Mesures[which(Mesures[,"Groupe"]==4),-6]) # On effectue la moyenne de toutes les valeurs
colMeans(Mesures[which(Mesures[,"Groupe"]==4),-6]) # On effectue ici la moyenne colonne par colonnemean(Mesures[which(Mesures[,"Groupe"]==4),1:3]) # On effectue la moyenne de toutes les valeurs
colMeans(Mesures[which(Mesures[,"Groupe"]==4),1:3]) # On effectue ici la moyenne colonne par colonnedim(), ncol() et nrow(). A quoi correspondent ces nombres ?dim(Mesures) # Dimensions (nbre lignes et nbre colonnes) de la matrice
ncol(Mesures) # Nbre de colonnes
nrow(Mesures) # Nbre de lignesvalues <- c(1,0,3,4,5,5,0,4,5,6,3,4,0,1,3,2)
mat <- matrix(values,nrow=4)vec <- diag(mat)submat <- mat[1:2,]
submat2 <- mat[,3:4]
dim(submat)  # Matrice 2x4
dim(submat2) # Matrice 4x2smallmat <- mat[,colSums(mat <5)==4]notzero <- mat[rowSums(mat !=0)==4,]mat2 <- matrix(1:16,nrow = 4)puis comparer les instructions mat * mat2et mat %*% mat2.
mat * mat2 # Le produit est effectué terme à terme
mat%*%mat2 # On effectue le produit matriciel