基于以下k1
,k2
,k3
和x
值
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
在这种情况下循环。
答案 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)
}}