Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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语句_R_Loops_If Statement - Fatal编程技术网

R 复杂If语句

R 复杂If语句,r,loops,if-statement,R,Loops,If Statement,我需要为我在R中进行的循环编写一个长if语句,以模拟一个赛季的足球比赛。目前,我正在使用此代码模拟匹配结果 mod3=glm(formula = Score ~ as.factor(Attack) + as.factor(Defence) +as.factor(Home)+Division, family = poisson, data = football) for (i in 1:92){ for (j in 1:92){ if (i!=j){ teamHome=levels

我需要为我在R中进行的循环编写一个长if语句,以模拟一个赛季的足球比赛。目前,我正在使用此代码模拟匹配结果

mod3=glm(formula = Score ~ as.factor(Attack) + as.factor(Defence) +as.factor(Home)+Division, family = poisson,    data = football)
for (i in 1:92){
 for (j in 1:92){
  if (i!=j){
  teamHome=levels(football$Attack)[i] 
  teamAway=levels(football$Attack)[j]
  homeScore=rpois(1,predict.glm(mod3, data.frame(Attack=teamHome,Defence=teamAway,Home="Y   "),type="response"))
  awayScore=rpois(1,predict.glm(mod3, data.frame(Attack=teamAway,Defence=teamHome,Home="N   "),type="response"))
  Result= if(homeScore>awayScore){
   Result="H"
} else if(homeScore<awayScore){
Result="A"
}else if(homeScore==awayScore){
Result="D"
}


 results<-print(paste(teamHome,homeScore,"      ",teamAway,awayScore,Result),quote=F)
 }
}
}  
如果你觉得你能帮上忙,或者对我的解释有什么不清楚的地方,需要解释的话,请问我,因为我在这方面非常需要帮助

我的数据集的形式示例

Attack                Defence                    Score Home Division 
1 Chelsea                Aston Villa                8 Y    S                  
2 Arsenal                Reading                    4 N    S                 
3 Arsenal                Newcastle                  7 Y    S                
4 Port Vale              Burton                     7 Y    S                  
5 Liverpool              Newcastle                  6 N    S                  
6 Watford                Leeds                      6 N    S                
谢谢


Steve

忽略我对原始帖子的最后评论-我现在从您的示例中看到,每行有两个分区,连接成一个字符串。因此,您可以提取相关的部门内标签,如下所示:

homeDiv <- substr(football$division[football$Attack==teamHome][1], 1, 1)
awayDiv <- substr(football$division[football$Attack==teamAway][1], 1, 1)
homeScore <- rpois(..., data.frame(..., division = sprintf("%s%s", homeDiv, awayDiv) ...) ...)

homeDiv你能不能先初始化一下
division@GavinKelly嗨,Gavin,谢谢你的回答,我试图用上半部分,下半部分作为例子,来了解所需的if语句,因为我不确定大多数人是否理解足球桌。但事实上,我也需要一个分区反应,前20名对阵20-44名,例如英超联赛和冠军联赛,以及联盟之间的所有其他组合。你知道怎么格式化吗?对不起,我用的是去年的数据@mvw上半部分意味着上面显示的输出中的前46支球队不确定我是否理解你想要实现的目标-你的
football$Division
(在你的glm调用中)大概包含了每支球队所处的分区(如果没有,
football$Division=cut(rankOfTeam,breaks=c(0,46,…)
就可以了。如果你想在预测某个赛区的球队在同一半场或不同半场对其他球队的表现时加入一个预测术语,那么你的模型中需要主客场的术语。如果试图预测新晋升的球队,可能会出现稀疏性问题,以及模型排名问题。
head(football)
可能有助于我们理解。@GavinKelly基本上是一个预测团队在联赛之间表现的术语。我的级别是[1]“12”“1C”“1P”“21”“2C”“2P”[7]“C1”“C2”“CP”“P1”“P2”“PC”[13]“S”有4个联赛P、C、1和2,以及每支球队如何攻击另一个联赛的球队的评级。我试图模拟所有92支球队之间的比赛,因此我使用这些因素来帮助模拟分区之间的比赛。Shi Gavin,R无法识别分区的字符串值。在mo中找到了系数model.frame.default中的d2错误(术语、新数据、na.action=na.action、xlev=object$xlevels):factor Division有了新的级别SSS,所以我猜S代表任何分区内的比赛,而P1代表分区间的比赛。您能尝试一下
ind吗?如果在您的旧数据中,两支球队都没有与另一个分区的任何人比赛,您会遇到问题(因为您的数据无法让我们轻松检测到他们的分区)如果发生这种情况,你可以根据一支球队与之比赛过的球队来推断球队的分区(或者你可以查一下!)嗨,当我这样做的时候,我确实对每一个组合都有分区效应
homeDiv <- substr(football$division[football$Attack==teamHome][1], 1, 1)
awayDiv <- substr(football$division[football$Attack==teamAway][1], 1, 1)
homeScore <- rpois(..., data.frame(..., division = sprintf("%s%s", homeDiv, awayDiv) ...) ...)