我有四个嵌套的for循环。我该如何优化呢?我实现了以下代码,但这需要很长时间。
p1=0.1
q1=0.3
p2=0.2
q2=0.4
n=10
r1=2
bincoeff=function(k,S1, R2, S2) {
return ( factorial(k+S1+R2+S2)/(factorial(k)*factorial(S1)*factorial(R2)*factorial(S2)) )
}
out=0
applyFormula= function(n, r1, p1, q1, p2, q2){
if (r1 < 0) {out <- 0}
else{
for (k in 0:r1) {
nmk= n-k
for (S1 in 0:nmk) {
for (R2 in 0:nmk) {
for (S2 in 0:nmk) {
if ( S1+R2+S2 == nmk ) {
out = out+ (bincoeff(k,S1,R2,S2)*(p1^k)*(q1^S1)*(p2^R2)*(q2^S2))
}
}
}
}
}
return (out)
}
}
我已将此功能应用于我的大数据的每一行,因此需要几分钟...... 您可以提供给我的所有帮助表示赞赏。谢谢!