R代码:效率问题

时间:2013-05-24 04:01:38

标签: performance r

我有一个长度为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)]compare[c(9:13)]至... compare[c(1:5)]并检查其中是否有sum >= 3< 5

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

  • 我实际上正在为德州扑克进行模拟测试。这部分代码用于检查不完整的直接绘制。

1 个答案:

答案 0 :(得分: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