61

我收到此错误:

错误:“else”中出现意外的“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)       } }

这有什么问题?

4

2 回答 2

90

您需要重新排列大括号。您的第一个语句是完整的,因此 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 将 else 解释为前面 if 语句的一部分,您必须使用花括号来告诉 R 您尚未完成:

if(condition == TRUE) {x <- TRUE
 } else {x <- FALSE}
于 2013-02-13T23:56:13.830 回答
8

我建议阅读一下语法。看这里。

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)
于 2013-02-13T23:51:43.177 回答