R Academy · Leçon

Indexation et sous-ensembles de matrices

Accédez aux lignes, aux colonnes et aux éléments avec la notation [row, col].

Leçon 2 sur 413 étapes

Indexation et sous-ensembles de matrices est une leçon R Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage R Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours R Academy comprend 4 leçons au total.

Principes de base des indices de matrice

Pour accéder aux éléments d’une matrice, utilisez la notation m[row, col]. Dans R, les indices de ligne et de colonne commencent à 1. La virgule est obligatoire : si vous l’omettez, la matrice est traitée comme un vecteur plat.

m <- matrix(1:12, nrow = 3, ncol = 4)
cat('Full matrix:
')
print(m)

# Element at row 2, column 3
cat('m[2, 3] =', m[2, 3], '
')

# Element at row 1, column 4
cat('m[1, 4] =', m[1, 4], '
')

Extraire une ligne entière

Laissez l’indice de colonne vide pour extraire une ligne entière. Le résultat est un vector (la dimension de la matrice est supprimée). La virgule doit tout de même être présente.

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
print(scores)

# Extract Alice's row
alice_scores <- scores[1, ]
cat('Alice:', alice_scores, '
')
cat('Alice mean:', mean(alice_scores), '
')

Extraire une colonne entière

Laissez l’indice de ligne vide pour extraire une colonne entière. Comme pour l’extraction d’une ligne, le résultat est un vector. La virgule qui sépare les positions de ligne et de colonne doit tout de même être présente.

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')

# Extract the Math column
math_scores <- scores[, 1]
cat('Math scores:', math_scores, '
')
cat('Math mean:  ', mean(math_scores), '
')
cat('Math max:   ', max(math_scores), '
')

Sélectionner plusieurs lignes et colonnes

Utilisez un vector d’indices pour extraire plusieurs lignes ou colonnes à la fois. Le résultat est une sous-matrice (toujours une matrice, et non un vector), qui conserve la structure à deux dimensions.

m <- matrix(1:16, nrow = 4, ncol = 4)
cat('Original 4x4:
')
print(m)

# Extract rows 1,3 and columns 2,4
sub_m <- m[c(1, 3), c(2, 4)]
cat('Submatrix rows 1,3 cols 2,4:
')
print(sub_m)
cat('Class:', class(sub_m), '
')

Accéder aux éléments par nom de ligne ou de colonne

Si une matrice possède des noms de lignes et de colonnes, vous pouvez utiliser ces noms plutôt que les positions pour indexer les éléments. Le code est ainsi plus lisible et résiste mieux à la réorganisation des lignes ou des colonnes.

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE,
                 dimnames = list(
                   c('Alice', 'Bob', 'Carol'),
                   c('Math', 'Sci', 'Eng', 'Hist')
                 ))

# Access by name
cat('Bob Science:', scores['Bob', 'Sci'], '
')
cat('Carol row:
')
print(scores['Carol', ])
cat('English column:
')
print(scores[, 'Eng'])

Indexation logique des matrices

Vous pouvez utiliser un vector logique (ou une matrice logique) pour sélectionner des éléments. Lorsqu’un vector logique est utilisé dans une dimension, il sélectionne les lignes ou les colonnes dont la valeur est TRUE.

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')

# Select students with mean score >= 85
row_means <- rowMeans(scores)
high_achievers <- scores[row_means >= 85, ]
cat('High achievers (mean >= 85):
')
print(high_achievers)

Indexation négative — exclure des lignes ou des colonnes

Préfixez un indice par - pour exclure la ligne ou la colonne correspondante. C’est une manière simple de supprimer certaines lignes ou colonnes sans énumérer toutes celles que vous souhaitez conserver.

m <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Original:
')
print(m)

# Drop row 2
cat('Without row 2:
')
print(m[-2, ])

# Drop columns 1 and 3
cat('Without cols 1 and 3:
')
print(m[, c(-1, -3)])

Élément unique avec drop = FALSE

Par défaut, l’extraction d’une seule ligne ou colonne supprime la dimension (et renvoie un vector). Utilisez drop = FALSE pour conserver un résultat sous forme de matrice, avec sa structure de lignes et de colonnes.

m <- matrix(1:9, nrow = 3, ncol = 3)

# Default: drops to vector
row1_vector <- m[1, ]
cat('m[1,] class:', class(row1_vector), '
')  # numeric (vector)

# drop = FALSE: keeps as 1-row matrix
row1_matrix <- m[1, , drop = FALSE]
cat('m[1,,drop=FALSE] class:', class(row1_matrix), '
')
cat('Dimensions:', dim(row1_matrix), '
')

Remplacer des valeurs par indexation

Vous pouvez modifier des éléments précis en combinant l’indexation et l’affectation. Cela fonctionne pour des éléments uniques, des lignes entières, des colonnes entières ou des sous-matrices.

m <- matrix(0, nrow = 4, ncol = 4)
cat('Zero matrix:
')
print(m)

# Set diagonal to 5
for (i in 1:4) m[i, i] <- 5
cat('After setting diagonal:
')
print(m)

# Replace entire row 2
m[2, ] <- c(1, 2, 3, 4)
cat('After replacing row 2:
')
print(m)

Indexation linéaire (à plat)

En interne, une matrice est stockée comme un vector plat (colonne par colonne). Vous pouvez accéder à ses éléments à l’aide d’un indice entier unique, selon cet ordre plat. Cette méthode peut être utile pour les opérations en bloc.

m <- matrix(c(10,20,30,40,50,60), nrow = 2, ncol = 3)
cat('Matrix:
')
print(m)

# Flat indices: column by column
cat('m[1] =', m[1], '(row 1, col 1)
')
cat('m[3] =', m[3], '(row 1, col 2)
')
cat('m[5] =', m[5], '(row 1, col 3)
')

# Replace flat index 4
m[4] <- 99
print(m)

Récapitulatif de l’indexation

Référence rapide pour l’indexation des matrices dans R :

  • m[r, c] — élément unique à la ligne r et à la colonne c
  • m[r, ] — ligne r entière
  • m[, c] — colonne c entière
  • m[c(r1,r2), c(c1,c2)] — sous-matrice
  • m['name', 'name'] — accès par nom de dimension
  • m[-r, ] — exclure la ligne r
  • m[logical_vec, ] — sélection logique de lignes
  • m[r, , drop=FALSE] — conserver le résultat comme matrice
m <- matrix(c(5,10,15,20,25,30), nrow = 2, ncol = 3)
cat('m[1,2] =', m[1,2], '
')
cat('m[2,]  =', m[2,], '
')
cat('m[,3]  =', m[,3], '
')
cat('m[-1,] :
'); print(m[-1, ])

Vérification rapide

Que renvoie m[-2, ] pour une matrice m comportant 3 lignes ?

Récapitulatif : indexer des matrices

Excellent travail ! Voici les points essentiels de cette leçon :

  • m[r, c] utilise d’abord la ligne, puis la colonne : les deux positions sont séparées par une virgule
  • Laissez un côté vide (m[r, ] ou m[, c]) pour extraire des lignes ou colonnes entières
  • Les indices négatifs excluent des lignes ou des colonnes
  • Les vectors logiques peuvent filtrer des lignes ou des colonnes
  • Les dimensions nommées permettent d’indexer par nom, pour une meilleure lisibilité
  • drop = FALSE empêche la perte des dimensions lors de l’extraction de lignes ou colonnes uniques
# Practical: find best student per subject
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')

for (subj in colnames(scores)) {
  best <- rownames(scores)[which.max(scores[, subj])]
  cat('Best in', subj, ':', best, '
')
}
Gratuit pour commencer

Apprends R avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
43
Leçons
159

Questions Fréquemment Posées

La leçon « Indexation et sous-ensembles de matrices » est-elle gratuite ?

Oui — le texte complet de « Indexation et sous-ensembles de matrices » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours R Academy, passe à CoddyKit PRO. Le cours R Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Indexation et sous-ensembles de matrices » ?

Accédez aux lignes, aux colonnes et aux éléments avec la notation [row, col]. Tu pratiques R Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer R Academy ?

Aucune expérience préalable n'est requise. R Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Indexation et sous-ensembles de matrices » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon R Academy ?

Oui. Chaque leçon R Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer des matrices avec matrix()
  2. Indexation et sous-ensembles de matrices
  3. Arithmétique et opérations sur les matrices
  4. Transposer et remodeler des matrices
← Retour à R Academy