2013-02-13 41 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

अपने बयान दूसरी पंक्ति से पूरा हुआ या नहीं। तीसरी पंक्ति की शुरुआत में इसके अंत में घुंघराले ब्रैकेट को ले जाएं। 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

आप अपने कर्ली कोष्ठक को पुनर्व्यवस्थित करने की जरूरत है। आपका पहला कथन पूर्ण है, इसलिए आर इसे इस तरह से व्याख्या करता है और अन्य पंक्तियों पर वाक्यविन्यास त्रुटियों का उत्पादन करता है।

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 

फिर आर पहली पंक्ति पढ़ता है और यह पूरा हो गया है, क्योंकि अपनी संपूर्णता में चलाता है। जब यह अगली पंक्ति में जाता है, तो यह जाता है "अन्यथा? क्या?" क्योंकि यह एक बिल्कुल नया बयान है। आर बयान करता है, तो पूर्ववर्ती के हिस्से के रूप में किसी और की व्याख्या करने के लिए, आप कर्ली कोष्ठक आर है कि आप अभी तक समाप्त नहीं कर रहे हैं बताने के लिए होना चाहिए:

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