このネストされたforループを最適化しようとしています。これは2つの数値の最小値をとり、その結果をデータフレームに追加します。私は、ベクトル化と初期化を使って大幅に減らすことができましたが、そのロジックをネストされたforループにどのように適用するかについてはあまりよく分かりません。これを迅速に実行するための迅速な方法はありますか?ランタイムの5時間以上に座っている。ループのネストを最適化する方法R
"シミュレーション" 100Kの値、および "制限" している5427個の値
output <- data.frame(matrix(nrow = nrow(simulation),ncol = nrow(limits)))
res <- character(nrow(simulation))
for(i in 1:nrow(limits)){
for(j in 1:nrow(simulation)){
res[j] <- min(limits[i,1],simulation[j,1])
}
output[,i] <- res
}
編集*
dput(head(simulation))
structure(list(simulation = c(124786.7479,269057.2118,80432.47896,119513.0161,660840.5843,190983.7893)), .Names = "simulation", row.names = c(NA,6L), class = "data.frame")
dput(head(limits))
structure(list(limits = c(5000L,10000L,20000L,25000L,30000L)), .Names = "limits", row.names = c(NA, 6L), class = "data.frame")
は 'apply'家族を見てみましょうで、私は' lapply'がで働くだろうと思いますあなたの状況。それは効果的に「for」に取って代わることができ、より迅速に動作する(あるいは、私は他の人を見つけて読んでいる)。また、 'dput(頭部(シミュレーション))'と 'dput(頭部(限界))'を得ることができますか?データの構造を見ることができますか?もしあなたが完全にベクトル化されていれば、「サプリー」は仕事を終わらせるかもしれません(私はそれでは大したことではありません)。 – Badger
あなたは542百万の計算をしています。あなたは、結果として得られる 'output'マトリックスで何をするつもりですか? – thelatemail
@thelatemail制限分散/標準を計算しています。私たちはシミュレーションを使用しているので、理論的な値を計算する良い公式は複雑な分布のためのdev –