查找矩阵或数据帧中每个唯一列的频率

mor*_*eza 4 r

我想通过列找到矩阵的频率.例如,对于下面的矩阵x

   x <- matrix(c(rep(1:4,3),rep(2:5,2)),4,5)
   x
         [,1] [,2] [,3] [,4] [,5]
   [1,]    1    1    1    2    2
   [2,]    2    2    2    3    3
   [3,]    3    3    3    4    4
   [4,]    4    4    4    5    5
Run Code Online (Sandbox Code Playgroud)

现在如何找到每个唯一列的频率并创建一个矩阵,每列是x的唯一列,最后一行作为矩阵x的频率添加

 #freqmatrix
        [,1] [,2]
 [,1]      1  2
 [,2]      2  3
 [,3]      3  4
 [,4]      4  5
 [,5]      3  2
Run Code Online (Sandbox Code Playgroud)

ori*_*zon 5

这是一个避免将矩阵转换为列表列表的解决方案,但它也有点乱:

x.unique <- unique(x, MARGIN  = 2)

freq <- apply(x.unique, MARGIN = 2, 
              function(b) sum(apply(x, MARGIN = 2, function(a) all(a == b)))
        )

rbind(x.unique, freq)

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