2014-12-09 3 views
1

Я прочитал некоторые из вопросов if для if for for for, но я не могу решить, что проблема для моего скрипта.инструкция if-else внутри цикла для R

type = numeric(length(r)) 

for (i in 1:10) { 
    if (((s_mov[i] < s_rot[i]) & (e_rot[i] < e_mov[i])) | ((s_rot[i] < s_mov[i]) & (s_mov[i] < e_rot[i])) == TRUE) { 
     type[i]=1 
    } 
    else if (((s_doc[i] < s_rot[i]) & (e_rot[i] < e_doc[i]) == TRUE) { 
     type[i]=2 
    } 
    else if (((s_rot[i] < e_mov[i]) & (s_doc[i] < e_rot[i])) | ((s_rot[i] < s_mov[i]) & (s_doc[i] < e_rot[i])) == TRUE) { 
     type[i]=3 
    } 
} 

или я попробовал этот путь, а

for (i in 1:10) { 
    if (((s_mov[i] < s_rot[i]) & (e_rot[i] < e_mov[i])) | ((s_rot[i] < s_mov[i]) & (s_mov[i] < e_rot[i])) == TRUE) { 
     type[i]=1 
    } 
    else if (((s_doc[i] < s_rot[i]) & (e_rot[i] < e_doc[i]) == TRUE) { 
     type <- replace(type, type[i],2 
    } 
    else if (((s_rot[i] < e_mov[i]) & (s_doc[i] < e_rot[i])) | ((s_rot[i] < s_mov[i]) & (s_doc[i] < e_rot[i])) == TRUE) { 
     type <- replace(type, type[i],3 
    } 
} 

, но я постоянно получаю

Error: unexpected '{' in: 

Что случилось?

Я не уверен, но я думаю, что в зависимости от данных, когда все 1:10 удовлетворяют первому утверждению if, он записывает 1 для всех 10 элементов, а вместо того, чтобы наклоняться, он продолжает и вызывает ошибку.

+1

Неожиданный '{' означает, что у вас простая синтаксическая ошибка. Вам просто нужно усердно смотреть на нее. Возможно, незакрытый парик. – joran

ответ

-1

В первом примере ваш первый else if имеет дополнительные (.

Во втором примере, ваш первый else if имеет дополнительный (, и ваши replace функция не имеет ).

1

Похоже, что вам не хватает нескольких закрывающих кронштейнов в разных местах. Я настоятельно рекомендую использовать хорошую среду IDE, такую ​​как RStudio, которая имеет побочное преимущество выделения соответствующих скобок.

Операторы type <- replace... требуют закрытия ).
Просто Eyeballing, это выглядит как первый else if отсутствует закрывающий ), а также:

else if (((s_doc[i] < s_rot[i]) & (e_rot[i] < e_doc[i]) == TRUE) { 

у вас есть 4 отверстия и только 3 закрывающие скобки в там.

Я не проверял другие заявления, но вы должны.

+0

Вы скопировали скобки, они в порядке. – pak

+0

Вы уверены? Я только что пересчитал и определенно подсчитал 4 открытия и 3 закрытия –

+0

Вы имеете в виду скобки '[' и ']' или круглые скобки '(' and ')'? Скобки прекрасны, парнеров не хватает. – pak

Смежные вопросы