2011-06-29 14 views
12

Biorąc pod uwagę macierz:R - pozycja powrotu elementu w macierzy?

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

Jaki jest najszybszy sposób na badania iteracyjne nad matrycą i powrócić pozycję wszystkich niezerowych wpisów jako wskaźnik?

+6

Twoje pytanie powinno być "który jest najszybszy sposób?" Wtedy też odpowiedziałaby sama;) – hadley

+1

Przez dwa dni żartowałem z tego "który jest najszybszą drogą". Zrobiłem to w blogu, który tak bardzo mi się podoba. –

Odpowiedz

27

Oto jedno podejście

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

Cieszę się, że się zgadzasz! –

+0

@Cotton: odpowiedź Ramnatha dodała bardzo użytą informację, że istnieje parametr dodawania, z którego powstaje wyjście zorientowane na matrycę. Więc nie widziałem go tak, jak zgadza się z tym, że lepiej wywiązuje się z tego, co chciał OP. –

+0

@DWin Err, czy to nie to, co "TRUE" w kodzie R Ritchie's R po "a może" robi? Słaba forma w środowisku nauczania, aby nie nazwać argumentów, ale dwie odpowiedzi są takie same. –

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

czy może

which(m != 0, TRUE)