Menu
Coddy logo textTech

Créer des matrices

Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 17 sur 64.

Une matrice est un vecteur organisé en lignes et en colonnes, et chaque valeur est du même type. matrix(data, nrow = ...) la remplit par défaut colonne par colonne :

m <- matrix(1:6, nrow = 2)
print(m)

Sortie :

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Ajoutez byrow = TRUE pour le remplir ligne par ligne, ce qui correspond aux données écrites à raison d’une ligne par ligne :

m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m)

Sortie :

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Indiquez soit nrow, soit ncol ; R calcule l’autre à partir de la longueur des données.

dim(m) renvoie le nombre de lignes et de colonnes, tandis que nrow() et ncol() renvoient chacune une seule de ces valeurs. matrix(0, nrow = 2, ncol = 3) répète une valeur unique pour remplir la matrice :

m <- matrix(0, nrow = 2, ncol = 3)
print(dim(m))
print(nrow(m) * ncol(m))
print(length(m))

Sortie :

[1] 2 3
[1] 6
[1] 6

rbind() empile les vecteurs comme des lignes et cbind() comme des colonnes, ce qui construit une matrice à partir de vecteurs séparés :

a <- c(1, 2, 3)
b <- c(4, 5, 6)
print(rbind(a, b))
print(dim(cbind(a, b)))

Sortie :

  [,1] [,2] [,3]
a    1    2    3
b    4    5    6
[1] 3 2
challenge icon

Défi

Facile

Complétez make_grid(values, n_cols). Renvoyez une matrice comportant n_cols colonnes et contenant values ligne par ligne. Le nombre de valeurs est toujours un multiple de n_cols.

Le code fourni lit les valeurs sur une ligne séparée par des virgules et n_cols sur la ligne suivante. Il affiche chaque ligne de la matrice renvoyée sur sa propre ligne, puis sa taille sous la forme rows x columns.

Essayez vous-même

make_grid <- function(values, n_cols) {
  # Écrivez votre code ici
  matrix(values)
}

# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
values <- as.numeric(strsplit(input[1], ",")[[1]])
m <- make_grid(values, as.numeric(input[2]))
for (i in seq_len(nrow(m))) cat(m[i, ], "\n")
cat(nrow(m), "x", ncol(m), "\n")
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur R en ligne