与if else陈述相反

时间:2019-04-19 13:32:49

标签: r if-statement

我已经创建了一个数据集,其中包含团队在2019-2020年MLB赛季的当前跑步差异。我正在尝试预测结果(如果您应该下注,以及应该押在哪支球队上)。这是一个非常基本的功能,但是如果语句相互矛盾,我会遇到其他麻烦。

请注意下面的代码中的声明:

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

2 个答案:

答案 0 :(得分:1)

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

先问是否x > 2*y

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

x > 2*y块内的x>y

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

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

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

答案 1 :(得分:0)

如果说x = 50且y = 5,那么您有x> y和x> 2 * y 所以没有矛盾。

但是您可以在第一个if条件中添加以下内容:

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

因此,只有在x大于y但不太大(即小于2 * y)时,您才返回BETX。

否则,您可以先检查x> 2y,然后再检查x> y。

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

}