У меня есть следующая матрица

matrix(c(1228,39,2,158,100,649,1,107,1,0,54,9,73,12,4,137), nrow=4)
    [,1] [,2] [,3] [,4]
[1,] 1228  100    1   73
[2,]   39  649    0   12
[3,]    2    1   54    4
[4,]  158  107    9  137

И я хотел бы преобразовать его в таблицу непредвиденных обстоятельств с именованными «осями» и упорядоченными именами столбцов (в основном сохраняя существующие индексации столбцов и строк). Другими словами, некоторые любят:

      Variable 1
        [,1] [,2] [,3] [,4]
    [1,] 1228  100    1   73
var2[2,]   39  649    0   12
    [3,]    2    1   54    4
    [4,]  158  107    9  137
0
Dambo 25 Апр 2017 в 03:46

2 ответа

Лучший ответ

Вы можете назначить dimnames при создании matrix

m = matrix(c(1228,39,2,158,100,649,1,107,1,0,54,9,73,12,4,137), nrow=4)

matrix(m, nrow = NROW(m), dimnames=list(var1 = sequence(NROW(m)), var2 = sequence(NCOL(m))))
#    var2
#var1    1   2  3   4
#   1 1228 100  1  73
#   2   39 649  0  12
#   3    2   1 54   4
#   4  158 107  9 137 

На самом деле, вы можете использовать dimnames в самом начале, когда создаете m тоже

0
d.b 25 Апр 2017 в 00:52

Мы можем использовать с dimnames и names

dimnames(m1) <- list(NULL, NULL)
names(dimnames(m1)) <- c("Var2", "Variable 1")
m1
#     Variable 1
#Var2   [,1] [,2] [,3] [,4]
#   [1,] 1228  100    1   73
#   [2,]   39  649    0   12
#   [3,]    2    1   54    4
#   [4,]  158  107    9  137

Или в одну строку

dimnames(m1) <- list(Var2 = NULL, `Variable 1` = NULL)

Или другой способ написать это

dimnames(m1) <- setNames(vector("list", 2), c("Var2", "Variable 1"))

Данные

m1 <- matrix(c(1228,39,2,158,100,649,1,107,1,0,54,9,73,12,4,137), nrow=4)
0
akrun 25 Апр 2017 в 03:17
43599779