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

时间:2016-04-12 04:59:04

标签: r lapply

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

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) })

申请后我有一个表格列表

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

以一对列读取此结果。正如你所看到的,table()函数没有“猜测”我只计算0和1,并将另一个1和频率2(或另一个0和frq 2)放在我预期的位置

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

任何想法或更好的解决方案?

1 个答案:

答案 0 :(得分:1)

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

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