Подтвердить что ты не робот

Неожиданная ошибка "else" в "else"

Я получаю эту ошибку:

Ошибка: неожиданно "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)       } }

Что не так с этим?

4b9b3361

Ответ 1

Вам нужно переставить фигурные скобки. Ваш первый оператор завершен, поэтому 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}

Ответ 2

Я бы посоветовал немного прочитать синтаксис. Смотрите здесь.

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)