2011-06-29 10 views
12

R - 行列内の要素の位置を返しますか?行列が与えられ

 [,1] [,2] 
[1,] 0 0.0 
[2,] -1 0.8 

行列を反復し、インデックスとしてすべての非ゼロのエントリの位置を返すようにRで最も簡単な方法は何ですか?ここで

+6

ある "最速の方法です?"そして、それはまた、自分自身を答えるでしょう;) – hadley

+1

私は2日間ジョーク「最速の方法である」これについて笑ってきました。私はそれが大好きなブログ投稿にしました。 –

答えて

27

は一つのアプローチは、あなたの質問があるべき

mat = matrix(rnorm(9), 3, 3) 
which(mat !=0, arr.ind = T) 
+0

あなたが同意してうれしい! –

+0

@Cotton:Ramnathの答えは、行列指向の出力を生成することに加えパラメータがあったことを非常に使用される情報を追加しました。だから私は彼がOPが望んでいたことを推測するより良い仕事をしていることに同意するとは思わなかった。 –

+0

@DWinのErr、それは後に@リッチーのRコードでどのような 'true'のではありません「または多分」しているのですか?引数の名前を指定しないようにするには、教育環境では貧弱な形式ですが、2つの回答は同じです。 –

15
m <- matrix(c(0, 1, 1, 0), nrow = 2) 
which(m != 0) 

または多分

which(m != 0, TRUE) 
関連する問題