2016-05-16 5 views
1

Ich habe versucht, diesen Code auszuführen (hier unten), und ich habe immer diese Fehlermeldung:Fehler Debug {: fehlender Wert in dem WAHR/FALSCH benötigten

for(i in 1:length(qid2)) 
{ 
    for(j in 1:length(qid)) 
    { 
    if (qid2[i]==qid[i]) 
    { 
     correct.option[i] = aid[j+cid[j]] 
     print(correct.option[i]) 
    } 
    } 
} 

Error in if (qid2[i] == qid[i]) { : missing value where TRUE/FALSE needed

+0

Wie sehen die Daten aus? Es ist auch eine gute Idee, öffnende Klammern in derselben Zeile wie der Code zu platzieren, der sie erstellt. – alistaire

+0

Nicht trennen 'für (...)' oder 'if (...)' und '{' mit enter/return; Halte sie auf der gleichen Linie. 'if' und' for' können ohne die geschweiften Klammern funktionieren, wenn mehr auf der gleichen Setup-Zeile ist, so dass es viel einfacher ist, Ihren Code versehentlich zu vermasseln. – alistaire

+0

Diese Frage wurde beantwortet unter: http://stackoverflow.com/questions/7355187/error-in-if-while-condition-missing-value-where-true-false-needed – pengchy

Antwort

2

Wahrscheinlich, weil qid2 und qid verschieden ist Längen, so dass irgendwann i größer ist als die kürzere Länge, so dass der Vergleich ein Element enthält, das nicht existiert. Vielleicht wollten Sie vergleichen qid2[i]==qid[j]? Die unten stehende cat()-Anweisung ist ein Beispiel dafür, wie Sie solche Dinge debuggen könnten.

qid2 <- 1:3 
qid <- 1:2 
for (i in 1:length(qid2)) { 
    for(j in 1:length(qid)) { 
     cat(i,j,qid[i],qid2[i],"\n") 
     if (qid2[i]==qid[i]) { 
     } 
    } 
} 
## 1 1 1 1 
## 1 2 1 1 
## 2 1 2 2 
## 2 2 2 2 
## 3 1 NA 3 
## Error in if (qid2[i] == qid[i]) { 
##  (from #4) : missing value where TRUE/FALSE needed