2014-12-27 36 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-需要? –

+0

'X_star'和'x'的值是什么? – Ujjwal

回答

1

开始学习如何调试程序。这里是“?options”的一句话

函数dump.frames和recover提供了允许进行事后调试的替代方法。请注意,这些需要指定为例如options(error = utils :: recover)

使用上面提到的选项功能,然后在错误中可以检查对象的内容,您可能会看到其中一个是NA。我在每个会话开始时都会调用这个函数来捕获这样的错误。

+0

嗨吉姆,你好吗? :-) –

+0

我会这样做,谢谢。 –