私は現在、ループを持っています。実際には、シミュレーションモデルでは、ループ内のループであり、多数の個人で遅くなります。私はそのほとんどをベクトル化し、それを非常に高速にしました。しかし、リストの複数の要素を同じものとして割り当てる部分があり、達成したいタスクだけに大きなループを単純化しています。
new.matrices[[length(new.matrices)+1]]<-old.matrix
ループが繰り返されるたびに、上記の行が呼び出され、同じ行列オブジェクトがリストの次の新しい要素に割り当てられます。
これをベクトル化しようとしています-可能であれば、またはループまたは適用ステートメントよりも高速にします。
これまでのところ、次の行に沿って試してみました。
indices <- seq(from = length(new.matrices) + 1, to = length(new.matrices) + reps)
new.matrices[indices] <- old.matrix
ただし、これにより次のメッセージが表示されます。
Warning message:
In new.effectors[effectorlength] <- matrix :
number of items to replace is not a multiple of replacement length
また、次のようなold.matrix
の 1 つの要素に の1 つの値を代入しようとします。new.matrices
[[1]]
[1] 8687
[[2]]
[1] 1
[[3]]
[1] 5486
[[4]]
[1] 0
目的の結果が 1 つのリスト要素 = 1 つのマトリックス全体である場合、old.matrix
ループせずにリスト要素に行列を貼り付けてベクトル化する方法はありますか? 現在実装されているループを使用すると、何千もの繰り返しを話しているため、処理が大幅に遅くなるため、可能であればこれをベクトル化したいと考えています。