2016-12-05 2 views
1

count1 sollte die erste Position von 1 im Eingang zurückgeben. Mein Code funktioniert nicht. Was ist der Fehler?Grundlegender R-Programmierfehler

count1 <- function(x) { 
    for(i in x) { 
     if(i==1) break 
    } 
    i 
} 
count1(c(2,3,1,4)) 
[1] 1 
count1(c(2,3,1,4,1,4,5,1)) 
[1] 1 

Ich habe die gleiche Logik verwendet, um oddcount zu schreiben, die die Anzahl der ungeraden Zahlen zählt. Allerdings unter Codewörtern aber count1 nicht

> oddcount <- function(x) { 
    k<-0 
    for(i in x) { 
    if(i%%2==1) k <- k+1 
     } 
    k 
    } 
> oddcount(c(1,3,4,5)) 
[1] 3 
+0

'' which' soll Ihnen helfen –

+1

'i' ist die Elemente in' x', nicht ihre Indizes. – alistaire

+0

@ joel.wilson Du hast mich dazu gebracht, die Funktion 'which' zu benutzen:' count1 Konrad

Antwort

4

Diese beiden Funktionen sind genug für den Job:

# returning the 1st position of 1 
which_1 <- function(x){ 
    which.max(x==1) 
} 

which_1(c(2,3,1,1,5)) 
[1] 3 

# counting the number of odd nb 
count_odd <- function(x){ 
    sum(x%%2 == 0) 
} 
count_odd(c(2,3,1,1,4)) 
[1] 2 

Edit: Danke David für den Hinweis, die Tippfehler!

Verwandte Themen