2013-02-13 1 views
43

で '他の' 予期しない私はこのエラーを取得する:"他" のエラー

Error: unexpected 'else' in " else"

このif, else声明から:

if (dsnt<0.05) { 
    wilcox.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) } 
else { 
     if (dst<0.05) { 
wilcox.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) } 
    else { 
     t.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE)  } } 

これが間違っていますか?

+2

あなたの文は二線で完了している場合。波の括弧を3行目の先頭に移動します。 5日も同じことをしてください。 –

+1

可能な複製http://stackoverflow.com/questions/13724063/if-else-constructs-inside-and-outside-functions –

答えて

6

構文について少しお読みになることをお勧めします。 See here.

if (dsnt<0.05) { 
    wilcox.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) 
} else if (dst<0.05) { 
    wilcox.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) 
} else 
    t.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) 
+0

ちょうど私が素直になるように書き直されたコードを追加すべきだと思ったとき、私はすでにその答えを実現しましたsebastian-cによって回答されました。 – nadizan

+1

申し訳ありません。しかし、私は言語定義へのリンクを感謝しました。それは質問に答える。 –

67

中かっこを並べ替える必要があります。最初のステートメントは完了しているので、Rはそのステートメントをそのまま解釈し、他のステートメントに構文エラーを生成します。あなたが持っている場合は、より簡単に言えば

if (dsnt<0.05) { 
    wilcox.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) 
} else if (dst<0.05) { 
    wilcox.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE) 
} else { 
    t.test(distance[result=='nt'],distance[result=='t'],alternative=c("two.sided"),paired=TRUE)  
} 

::あなたのコードは次のようになります

if(condition == TRUE) x <- TRUE 
else x <- FALSE 

そして、Rは、最初の行を読み取り、それが完了しているので、全体的にこれを実行します。それが次の行に到達すると、それは "Else?Else what?"これは完全に新しい声明です。 Rは、if文、前の一環として、他を解釈させるには、あなたがまだ終了していないRを伝えるために波括弧を持っている必要があります

if(condition == TRUE) {x <- TRUE 
} else {x <- FALSE} 
関連する問題