Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 与if-else语句相矛盾_R_If Statement - Fatal编程技术网

R 与if-else语句相矛盾

R 与if-else语句相矛盾,r,if-statement,R,If Statement,我已经创建了一个数据集,其中包含2019-2020 MLB赛季各球队的当前跑步差异。我试图预测你是否应该下注的结果,以及你应该在哪支球队下注。这是一个非常基本的函数,但如果语句自相矛盾,我在其他方面遇到了麻烦 请注意以下代码中的语句: if(x > y) 与以下内容相矛盾: if(x > 2*y) 当我调用x大于双y的函数时,它仍然返回BETX而不是所需的LOCKX 我将尝试为骆家辉做同样的事情,但我想先解决这个问题 提前谢谢你 bets <- function(x, y

我已经创建了一个数据集,其中包含2019-2020 MLB赛季各球队的当前跑步差异。我试图预测你是否应该下注的结果,以及你应该在哪支球队下注。这是一个非常基本的函数,但如果语句自相矛盾,我在其他方面遇到了麻烦

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

if(x > y)
与以下内容相矛盾:

if(x > 2*y)
当我调用x大于双y的函数时,它仍然返回BETX而不是所需的LOCKX

我将尝试为骆家辉做同样的事情,但我想先解决这个问题

提前谢谢你

 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

如果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")
  }

}

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

先询问x>2*y

询问x>y块内的x>2*y

或者用复合语句替换x>y语句

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