2014-09-13 53 views
1

我有一個矩陣,其中的條目是數字0,1,2或3.我試圖確定此矩陣中包含數字「 3「兩次。這裏是我的代碼/輸出至今:R:矩陣行中特定條目的編號

> 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」出現兩次。感謝您的任何建議!

+4

'測試[rowSums(測試== 3)== 2]'檢查恰好兩次出現3在行中。 – 2014-09-13 18:48:56

回答

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以及

+0

你是什麼意思,你不能複製數據?你可以複製出'test' – 2014-09-13 21:21:10

+0

@DavidArenburg - 沒關係,用soread()'很容易:-) – 2014-09-13 21:25:19

+0

'soread()'?這是阿南達寫的又一個瘋狂功能嗎? – 2014-09-13 21:28:53

相關問題