2016-05-16 5 views
1

を必要と欠損値I(ここでは下に)このコードを実行しようとしていると、私はこのエラーを取得していますqid2qidが異なるおそらくのでエラーデバッグ{:TRUE/FALSEが

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

データはどのように見えますか?また、それらを設定するコードと同じ行にカッコを入れるのは良い考えです。 – alistaire

+0

'for(...)'や 'if(...)'と '{'をEnter/Returnで区切ってはいけません。それらを同じ行に置いてください。 'if'と' for'は同じ設定行にもっと多くのものがある場合は中括弧なしで動作することができますので、誤ってコードを混乱させるようになります。 – alistaire

+0

この質問は回答済みです:http://stackoverflow.com/questions/7355187/error-in-if-while-condition-missing-value-where-true-false-needed – pengchy

答えて

2

をしたがって、ある点ではiが短い長さよりも大きいので、比較には存在しない要素が含まれます。おそらくqid2[i]==qid[j]を比較するつもりでしたか?以下の文cat()は、このようなことをデバッグする方法の例です。

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 
関連する問題