我已经创建了一个数据集,其中包含团队在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
答案 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")
}
}