按行对矩阵数据进行分组,并将结果显示为具有暗名称的矩阵

Nei*_*uri 3 r matrix

我有以下代码:

mat = matrix(c(1, 3, 4, 11, 13, 13), nrow = 2, ncol = 3, byrow = TRUE)
mat_grouped = apply(mat, 1, function(row) tapply(row, as.factor(row), length))
Run Code Online (Sandbox Code Playgroud)

输出如下列表:

[[1]]
1 3 4 
1 1 1 

[[2]]
11 13 
 1  2
Run Code Online (Sandbox Code Playgroud)

但是我希望输出显示为矩阵,其中列名称由矩阵中的所有值给出并按行分组:

     1 3 4 11 13
[1,] 1 1 1  0  0
[2,] 0 0 0  1  2
Run Code Online (Sandbox Code Playgroud)

可以以这种形式获取我的数据吗?

H 1*_*H 1 6

你可以做:

table(row(mat), mat)

   mat
    1 3 4 11 13
  1 1 1 1  0  0
  2 0 0 0  1  2
Run Code Online (Sandbox Code Playgroud)

解释:

table()通过(交叉)制表值创建列联表。在这种情况下,有原始矩阵:

     [,1] [,2] [,3]
[1,]    1    3    4
[2,]   11   13   13
Run Code Online (Sandbox Code Playgroud)

第二个行索引矩阵的形状与 生成的矩阵相同row(mat):

     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
Run Code Online (Sandbox Code Playgroud)

该table()函数返回这两组值同时出现的计数。