首页 > 解决方案 > 与 if else 语句相矛盾

问题描述

我创建了一个数据集,其中包含 2019-2020 MLB 赛季球队当前的运行差异。我正在尝试预测结果(如果您应该下注,以及您应该下注哪支球队)。这是一个非常基本的功能,但我在 else if 语句自相矛盾时遇到了麻烦。

请注意下面的代码中的语句:

if(x > y)

与以下内容相矛盾:

if(x > 2*y)

当我用 x 超过两倍 y 调用函数时,它仍然返回“BETX”而不是所需的“LOCKX”

我将尝试为“LOCKY”做同样的事情,但我很想先解决这个问题。

先感谢您!

 bets <- function(x, y){
  if(x > y){
    return("BETX")
  } 
  else if(x == y){
    return("NO BET")
  }
  else if(x > 2*y){
    return("LOCKX")
  }else{
    return("BETY")
  }

}
bets(cubsdiff, diamondbacksdiff) ## BET CUBS
bets(yankeesdiff, royalsdiff) ## BET YANKS

标签: rif-statement

解决方案


有很多方法可以解决这个问题。

x > 2*y先问是否

if(x > 2*y){
    return("LOCKX")
}
else if(x > y){
    return("BETX")
}
...

询问是否x > 2*yx>y街区内

if(x > y){
    if(x > 2*y){
        return("LOCKX")
    } else {
        return("BETX")
    }
}
...

或用x > y复合语句替换您的语句

if (x > y & x <= 2*y){
    return("BETX")
} 
...

推荐阅读