0

時間がかかりすぎる大きなループがあります (~100 日)。Snow ライブラリで高速化したいと思っていますが、apply ステートメントは苦手です。これはループの一部にすぎませんが、この部分を理解できれば、残りは簡単です。たくさんの適用ステートメントまたはループで問題ありませんが、関数を使用してオブジェクト 'p' を取得する 1 つの適用ステートメントが理想的です。

元データ

dim(m1)   == x x    # x >>> 0
dim(m2)   == y x    # y >>> 0, y > x, y > x-10
dim(mout) == x x    
thresh    == x-10   #specific to my data, actual number probably unimportant
len(v1)   == y      #each element is a random integer, min==1, max==thresh 
len(v2)   == y      #each element is a random integer, min==1, max==thresh 

オリジナルループ

p <- rep(NA,y)
for (k in 1:y){
    mout <- m1 * matrix(m2[k,],x,x)
    mout <- mout/sum(mout)

    if (v1[k] < thresh + 1){
        if(v2[k] < thresh + 1){
            p[k] <- out[v1[k],v2[k]]
        }
        if(v2[k] > thresh){
            p[k] <-  sum(mout[v1[k],(thresh+1):x])
        }
    }

    #do stuff with object 'p'
}
4

0 に答える 0