运动R功能问题;否则,如果?

时间:2019-11-27 20:56:38

标签: r if-statement

基于以下k1k2k3x

x = GP$PDiff

k1 = 35*sin(0.0561*x)

k2 = -(1/7)*x + 39

k3 = 30

我遇到以下if...else问题

if (x <= 28){{

  elo <- eloRating(home="HomeTeam", away="AwayTeam", homeScore="HomeScore", awayScore = "AwayScore",
                   data = GP, kfactor = k1, initialRating = 1500, homeAdvantage = 0)
}

  else if (x > 28|x <= 35){

    elo <- eloRating(home="HomeTeam", away="AwayTeam", homeScore="HomeScore", awayScore = "AwayScore",
                     data = GP, kfactor = k2, initialRating = 1500, homeAdvantage = 0)
  }

  else{
    elo <- eloRating(home="HomeTeam", away="AwayTeam", homeScore="HomeScore", awayScore = "AwayScore",
                     data = GP, kfactor = k3, initialRating = 1500, homeAdvantage = 0) 
  }
}

当我尝试运行它时,出现错误,提示“在'else'中出现了意外的'else'”,并且括号也存在错误。

我尝试使用elseif运行它,我尝试遵循其他一些建议的问题,但无法弄清楚。

我正在使用一个不断变化的x值来运行它,建议您尝试一个for循环,但是我是R中的相对菜鸟,不知道如何设置for在这种情况下循环。

1 个答案:

答案 0 :(得分:0)

我建议在末尾添加一个else大小写,然后为x> 28 | x <= 35。

也许有一种更优雅的方法可以做到这一点,但是这种方法确实有效。

if (x <= 28){

  elo <- eloRating(home="HomeTeam", away="AwayTeam", homeScore="HomeScore", awayScore = "AwayScore",
                   data = GP, kfactor = k1, initialRating = 1500, homeAdvantage = 0)
}

  else{
      if (x > 28|x <= 35){

      elo <- eloRating(home="HomeTeam", away="AwayTeam", homeScore="HomeScore", awayScore = "AwayScore",
                     data = GP, kfactor = k2, initialRating = 1500, homeAdvantage = 0)
  }

  else{
    elo <- eloRating(home="HomeTeam", away="AwayTeam", homeScore="HomeScore", awayScore = "AwayScore",
                     data = GP, kfactor = k3, initialRating = 1500, homeAdvantage = 0) 
  }}