【问题标题】:Nested If statements in R [closed]R中的嵌套If语句[关闭]
【发布时间】:2014-12-27 00:33:30
【问题描述】:

我在 R 中有一个函数,可以评估 if 语句中的多个 if 语句。当我运行它时它返回一条错误消息(我只包括代码的sketh,因为实际的功能非常大):

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。如有任何帮助,我将不胜感激。

干杯,

纳波

【问题讨论】:

  • 查看X_star - x的结果。在我看来,它在某个时候会出现 NA 值。
  • X_starx 的值是多少?
  • @ujjwal:同意这还不清楚。建议投票结束。
  • X_star 和 x 是整数(取 1 到 7 之间的任何值)。它是可逆跳转 MCMC 实现的一部分。我同意这是模糊的。我可以发布整个函数,但我担心它会有点太长(该函数大约 100 行长,其中包含一些其他函数)。谢谢

标签: r function if-statement for-loop nested


【解决方案1】:

从学习如何调试程序开始。这是“?选项”中的一句话

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

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

【讨论】:

  • 嗨,吉姆,你好吗? :-)
  • 我会这样做的,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
相关资源
最近更新 更多