Подтвердить что ты не робот

Как установить уникальные имена строк и столбцов матрицы, когда ее размерность неизвестна?

У меня есть матрица вроде:

     [,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 
4b9b3361

Ответ 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