Как установить уникальные имена строк и столбцов матрицы, когда ее размерность неизвестна?
У меня есть матрица вроде:
[,1][,2][,3][,4]
[1,] 12 32 43 55
[2,] 54 54 7 8
[3,] 2 56 76 88
[4,] 58 99 93 34
Я не знаю заранее, сколько строк и столбцов у меня будет в матрице. Таким образом, мне нужно динамически создавать имена строк и столбцов.
Я могу назвать столбцы (строки) прямо так:
colnames(rmatrix) <- c("a", "b", "c", "d")
Однако, как я могу динамически создать вектор имен для соответствия размерам матрицы?
nm <- ("a", "b", "c", "d")
colnames(rmatrix) <- nm
Ответы
Ответ 1
Вы можете использовать rownames
и colnames
и установить do.NULL=FALSE
для динамического создания имен, например:
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
вы можете изменить prefix
, чтобы назвать строки/столбцы так, как вы хотите.
Ответ 2
Чтобы динамическименовать столбцы (или строки), вы можете попробовать
colnames(rmatrix) <- letters[1:ncol(rmatrix)]
где letters
можно заменить вектором имен столбцов по вашему выбору. Вы можете делать подобное для строк.
Ответ 3
Вы можете использовать provideDimnames
. Некоторые примеры с различной степенью настройки:
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