列出矩阵行中元素的频率

问题描述 投票:0回答:2

数据

考虑以下矩阵。

set.seed(1)
base <- letters[1:4]
mmm <- matrix(sample(base, size=20, replace=TRUE), nrow=4)
print.table(cbind(base, "|", data=mmm))
#      base            
# [1,] a    | a b b a b
# [2,] b    | d a b a b
# [3,] c    | c c c a b
# [4,] d    | a c c b c

预期产量
按底数 x 底数索引的矩阵。

 |  a b c d
a|  2 3 0 0
b|  2 2 0 1
c|  1 1 3 0
d|  1 1 3 0

如果 y 在 x 行中出现 n 次,则元素 (x,y) 包含 n。

或三胞胎列表

a,a,2
a,b,3
b,a,2
...
r matrix frequency tabulate
2个回答
1
投票

table

table(rep(base, ncol(mmm)), mmm)
#>    mmm
#>     a b c d
#>   a 2 3 0 0
#>   b 2 2 0 1
#>   c 1 1 3 0
#>   d 1 1 3 0

0
投票

由于

mmm
是一个矩阵,我们可以尝试使用
apply
:

lvls <- sort(unique(c(mmm)))
t(apply(mmm, 1, \(x) table(factor(x, lvls))))

#     a b c d
#[1,] 2 3 0 0
#[2,] 2 2 0 1
#[3,] 1 1 3 0
#[4,] 1 1 3 0
© www.soinside.com 2019 - 2024. All rights reserved.