J'ai une matrice comme:
[,1][,2][,3][,4]
[1,] 12 32 43 55
[2,] 54 54 7 8
[3,] 2 56 76 88
[4,] 58 99 93 34
Je ne sais pas à l'avance combien de lignes et de colonnes j'aurai dans la matrice. Ainsi, je dois créer dynamiquement des noms de ligne et de colonne.
Je peux nommer des colonnes (lignes) directement comme:
colnames(rmatrix) <- c("a", "b", "c", "d")
Cependant, comment puis-je créer mon vecteur de noms de manière dynamique pour s'adapter aux dimensions de la matrice?
nm <- ("a", "b", "c", "d")
colnames(rmatrix) <- nm
Vous pouvez utiliser rownames
et colnames
et définir do.NULL=FALSE
afin de créer des noms dynamiquement, comme dans:
set.seed(1)
rmatrix <- matrix(sample(0:100, 16), ncol=4)
dimnames(rmatrix) <- list(rownames(rmatrix, do.NULL = FALSE, prefix = "row"),
colnames(rmatrix, do.NULL = FALSE, prefix = "col"))
rmatrix
col1 col2 col3 col4
row1 26 19 58 61
row2 37 86 5 33
row3 56 97 18 66
row4 89 62 15 42
vous pouvez modifier prefix
pour nommer les lignes/colonnes comme vous le souhaitez.
Pour nommer dynamiquement des colonnes (ou des lignes), vous pouvez essayer
colnames(rmatrix) <- letters[1:ncol(rmatrix)]
où letters
peut être remplacé par un vecteur de noms de colonnes de votre choix. Vous pouvez faire la même chose pour les lignes.
Vous pouvez utiliser provideDimnames
. Quelques exemples avec différents degrés de personnalisation:
m <- matrix(1:12, ncol = 3)
provideDimnames(m)
# A B C
# A 1 5 9
# B 2 6 10
# C 3 7 11
# D 4 8 12
provideDimnames(m, base = list(letters, LETTERS))
# A B C
# a 1 5 9
# b 2 6 10
# c 3 7 11
# d 4 8 12
provideDimnames(m, base = list(paste0("row_", letters), paste0("col_", letters)))
# col_a col_b col_c
# row_a 1 5 9
# row_b 2 6 10
# row_c 3 7 11
# row_d 4 8 12