このためのループは必要ありません。また、行列として扱うためだけに大きな行列をデータ フレームに入れることは非効率的です (ただし、すべての計算を順番に実行した後、最後にデータ フレームを作成する必要がある場合があります)。 CSV ファイルに書き込みます)。
m.mean <- 1:1000
m.sd <- 1:1000/20
num.columns <- 500
x <- matrix(nrow=length(m.mean), ncol=num.columns,
data=rnorm(n=length(m.mean) * num.columns))
x <- x * cbind(m.sd)[,rep(1,num.columns)] + cbind(m.mean)[,rep(1,num.columns)]
kkk <- data.frame(m.mean=m.mean, m.sd=m.sd, unname(x))
write.csv(kkk, "kkk.txt")
foreach ループから既存のデータ構造に直接結果を代入することに関する最初の質問に答えるには、それは不可能です。foreach パッケージの並列バックエンドは、個別の R プロセスで各計算を実行するように設計されているため、それぞれが個別のオブジェクトを親プロセスに返す必要があり、親プロセスは.combine
foreach に提供された関数を使用してそれらを収集します。変数に直接代入する並列 foreach ループを作成することもできますがkkk
、それぞれの代入は別々のプロセスで発生し、メイン プロセスと共有されないため、効果はありません。