如何从矩阵转换为偶然性table?

How to convert from a matrix to a contingency table?

我有以下矩阵

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

我想将其转换为具有命名 "axes" 和有序列名的应急 table(基本上保持现有的列-行索引)。 换句话说,有些像:

      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

创建matrix时可以赋值dimnames

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 

事实上,您也可以在创建 m 时一开始就使用 dimnames

我们可以使用 dimnamesnames

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)