首页 > 解决方案 > 运动 R 功能问题;否则-如果?

问题描述

基于以下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在这种情况下设置循环。

标签: rif-statement

解决方案


我建议在最后添加一个 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) 
  }}

推荐阅读