0

我有一个长度为 14 的向量,我想以这种方式检查 5 组:

compare = c(rep(1,4),rep(0,10)) # Vector

g.test = matrix(0,5,10)
for (i in 5:14){
 g.test[,i-4] = head(tail(compare,i),5)
}
if (sum(colSums(g.test) >= 3 & colSums(g.test) < 5 ) > 0){yield = T}

我正在遍历向量 compare[c(10:14)]to compare[c(9:13)]to ... tocompare[c(1:5)]并检查其中是否有一个sum >= 3and < 5

但是,比较只是 1 个这样的向量;我有 100,000 个这样的向量,由 1 和 0 的不同排列组成,但长度均为 14。像这样运行我的代码需要我的计算机 100 秒才能运行完。有一个更好的方法吗?

  • 我实际上正在为德州扑克进行模拟测试。这部分代码用于检查不完整的顺子听牌。
4

1 回答 1

0

尝试这个:

g.sums <- rowSums(embed(compare, 5))
yield <- any(g.sums >= 3 & g.sums < 5)

在我的机器上进行 100,000 次迭代:

#    user  system elapsed 
#   2.438   0.052   2.493
于 2013-05-24T04:34:08.297 回答