2016-09-07 2 views
-1

Ich erstellte eine 6 x 10 Matrix von zufälligen Ganzzahlen. Ich muss die Zeilen ermitteln, die genau 2 Vorkommen der Zahl 1 enthalten, mit welcher Funktion.Verwendung der Funktion in R-Sprache

+1

Es ist einfacher, Ihnen zu helfen, wenn Sie ein [reproduzierbares Beispiel] liefern (http://stackoverflow.com/questions/5963269/how-to-make-a -groß-r-reproduzierbar-Beispiel) mit Beispiel-Eingabedaten. Warum die Anforderung, dass 'which()' verwendet werden muss? Möchten Sie die übereinstimmenden Zeilenindizes zurückgeben? Was genau ist die gewünschte Ausgabe? – MrFlick

+3

'was (rowSums (mat == 1) == 2)' – alistaire

+0

Und 'which' wird nicht einmal benötigt, wenn Sie nur eine Teilmenge tun 'mat [rowSums (mat == 1) == 2,]' wird gut genug sein. – thelatemail

Antwort

1

eine Probenmatrix:

set.seed(47) 
mat <- matrix(rpois(60, 2), 6, 10) 

mat 
##  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
## [1,] 5 1 1 0 3 3 1 2 1  0 
## [2,] 1 2 2 2 1 1 5 4 3  2 
## [3,] 3 2 2 1 0 2 2 1 1  0 
## [4,] 3 4 4 2 0 1 3 1 3  0 
## [5,] 2 1 1 2 2 4 0 2 0  2 
## [6,] 3 3 0 0 3 2 1 5 0  2 

Jetzt

  • Test, das Element gleich 1 (mat == 1) ist,
  • nehmen die rowSums die TRUE s zu zählen,
  • -Test, Summen gleich 2 und
  • verwenden which t o erhält die Indizes

so

which(rowSums(mat == 1) == 2) 
## [1] 4 5 
Verwandte Themen