行列の行の最大要素を選択する必要がありますが、自分自身を一部の列の間隔に制限する必要があります。私はこれを何度もやり直す必要がありますし、毎回変更を見なければならない「列範囲」も必要です。これまでは、妥当な時間内にシミュレーションを実行できないような拘束力があります。以下は私がやっていることの一例です。私は最適化する必要があるコードは、ここでmapply(function(x,y) apply(A[c(x,x:y,y),],2,max),Min,Max)
いくつかの列の間で行の最大要素を高速に選択する方法
A=matrix(runif(100^2),ncol=100)
Min=sample(80,10000,replace=T)
Max=Min+sample(1:10,10000,replace=T)
system.time(mapply(function(x,y) apply(A[c(x,x:y,y),],2,max),Min,Max))
user system elapsed
1.52 0.01 1.54
よりも約37倍高速である
rowMaxs
アプローチ@ MauricoRomero、私は間違っているかもしれませんが、あなたのコードは、あなたの質問に述べたものとは逆です。つまり、列のサブセットを持っているので、行のmax要素を検索するとします。しかし、 'A [c(x、x:y、y)、]'は行を部分集合にしています。また、 'apply(A [c(x、x:y、y)]、2、max)'は列の中のmax要素を探しています。私は何かを誤解していますか? –