我有一个长度为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秒才能完成。有更好的方法吗?
答案 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