【发布时间】:2015-03-06 05:41:15
【问题描述】:
我猜我的问题很奇怪。 我正在尝试为我大学的排球队制定时间表,我决定通过 R 来做。我有 21 支球队,其中 16 支球队每周都在比赛。如果一些球队有不同数量的比赛并不重要,因为我们要看看平均结果。
所以我创建了一个非常简单的函数:
play<-function(group){
for (i in 1:1){
playing<-sample(group,16)
in1<-sort(playing)
in2<-sample(playing)
if( sum(in1==in2)==0 ){
games<-rbind(in1,in2)
}
if( sum(in1==in2)!=0 ){
i<-i-1
}
}
return(games)
}
我的问题是什么? R没有帮助我!如果两个向量 in1 和 in2 在至少一个位置上彼此相等,则不再运行该函数。你们知道为什么吗?你知道我该如何解决这个问题吗?
比赛是本周比赛的球队。 (只有 16 人玩) group 将是一个带有团队名称的向量...(您可以使用 A、B、C、D 作为示例) sample(playing) 只是用 16 个选定的团队随机化向量。当 in1 和 in2 在任何空间都不匹配时,我们可以制作对子进行播放。在检查这一点时,问题来了。 :/
谁能帮帮我?谢谢
【问题讨论】:
-
for (i in 1:1)永远只会运行一次。您可能想要while,但我确信总体上有更好的方法。 -
您是否要制定 16 场比赛的时间表,其中 16 支球队中的每支球队打两场比赛。在一场比赛中,球队出现在第一列(主场比赛?),而在另一场比赛中,球队出现在第二列(客场比赛?)?因此,您想生成 (1:16) 的排列,使得排列的
n-th元素不是n?
标签: r function if-statement sample