使用 apply() 和 table() 包括缺失值的频率

Include frequencies of missing values using apply() and table()

我有一个简单的矩阵并应用一个函数来计算频率:

testM <- matrix(c(rep(1,3), rep(0,3)), ncol = 2, byrow = T)

> testM
     [,1] [,2]
[1,]    1    1
[2,]    1    0
[3,]    0    0

r <- apply(testM, 1, function(x) { table(x) })

申请后我得到了 tables

的列表
x Frq  x.1 F.1 x.2 F.2
1   2   0   1   0   2 
1   2   1   1   0   2

这个结果是用成对的列读取的。如您所见,table() 函数并没有 "guess" 我只计算 0 和 1,而是将另一个频率为 2 的 1(或另一个频率为 2 的 0)放在我期望的地方

x Frq  x.1 F.1 x.2 F.2
1   2   0   1   1   0 
0   0   1   1   0   2

有什么想法或更好的解决方案吗?

我们需要将每个 vector 转换为 factor 并指定 levels

apply(testM, 1, function(x)  table(factor(x, levels=0:1)) )