如何从矩阵转换为列联表?

时间:2017-04-25 00:46:01

标签: r xtable

我有以下矩阵

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

2 个答案:

答案 0 :(得分:0)

您可以在创建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

答案 1 :(得分:0)

我们可以使用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)