R:矩阵行中特定条目的编号

时间:2014-09-13 18:45:26

标签: r matrix

我有一个矩阵,其中的条目是数字0,1,2或3.我试图确定此矩阵中包含数字“3”两次的行数。到目前为止,这是我的代码/输出:

> test <-replicate(100, sample(0:3, 7, replace=T))
> test <- t(test)
> test <- subset(test, rowSums(test)==7)
> test
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0    3    1    0    3    0    0
[2,]    0    0    1    2    2    0    2
[3,]    1    0    0    2    0    3    1
[4,]    0    1    2    3    1    0    0
[5,]    1    1    1    3    1    0    0
[6,]    3    0    0    0    2    1    1

因此,例如,第1行包含数字“3”两次,但我想浏览整个矩阵并检查每一行以查看“3”是否出现两次。谢谢你的建议!

1 个答案:

答案 0 :(得分:1)

发表评论作为回答此问题的答案。


好像你想要

test[rowSums(test == 3) == 2, ]

对于您的示例数据,您需要drop = FALSE,因为只有一行,其中3个恰好出现两次。否则,R会将一行矩阵向下拖动到一个向量。

test[rowSums(test == 3) == 2, , drop = FALSE]
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,]    0    3    1    0    3    0    0

为安全起见,您可能还想在实际数据中使用drop = FALSE