2014-12-27 5 views
-1

У меня есть функция в R, которая оценивает несколько операторов if в выражении if. Он возвращает сообщение об ошибке, когда я запустить его (я только в том числе sketh кода, потому что фактическая функция довольно большой):Вложенные операторы If в R

if (X_star - x != 0){ 
if (w == 1){ 
    #stuff 
    } else { 
    #stuff 
    if (X_star == 1){ 
    #Stuff 
    } else { 
     #Stuff 
     } 
    #Stuff 
    } 
Y = something 
if (Y == 1){ 
    #Stuff 
    } else { 
    #Stuff 
    } 
} else { 
    if (Xmax - x !=0){ 
    Y = something else  
    if (Y == 1){ 
     #Stuff 
     } else { 
     #Stuff 
     } 
    } else { 
     #Stuff 
    } 
    } 

Ошибка:

Error in if (X_star - x != 0) { : missing value where TRUE/FALSE needed. 

Я читал некоторые другие где люди, казалось, имели ту же проблему, но я не мог найти окончательного ответа. Я смотрел на него некоторое время, но не могу найти, что с ним не так. Эта функция находится внутри цикла for, поэтому я не могу использовать векторный ifelse. Буду признателен за любую помощь.

Приветствия,

Напо

+2

Посмотрите на результат 'X_star - x'. Мне кажется, что в какой-то момент он берет значение «NA». –

+0

Вы читали https://stackoverflow.com/questions/7355187/error-in-if-while-condition-missing-value-where-true-false-needed? –

+0

Каковы значения 'X_star' и' x'? – Ujjwal

ответ

1

начать с обучения, как для отладки программ. Вот предложение из «? Options»

Функции dump.frames и recover предоставляют альтернативы, позволяющие откладывать отсрочку. Обратите внимание, что они должны быть указаны как, например, options (error = utils :: recover)

Используйте функцию параметров, отмеченную выше, а затем на ошибке вы можете проверить содержимое объектов, и вы, вероятно, увидите, что один из них - NA. У меня есть вызов этой функции в начале каждого сеанса, чтобы поймать ошибки, подобные этому.

+0

Привет, Джим, как я? :-) –

+0

Я сделаю это, спасибо. –

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