私は現在、実際にループを持っています。実際にはループ内にループがあります。私はそのほとんどをベクトル化して、それをずっと速く作りました。しかし、私は私が達成したいだけのタスクに大きなループを簡素化し、同じものとして、リストの複数の要素を割り当てる部分があります:、上記の行が呼び出され、ループの各反復でRは複数のリスト要素を同じオブジェクトに割り当てます
new.matrices[[length(new.matrices)+1]]<-old.matrix
をし、同じ行列オブジェクトがリストの次の新しい要素に割り当てられます。
可能であれば、これをベクトル化しようとしています。ループまたは適用ステートメントよりも高速にしています。
Warning message:
In new.effectors[effectorlength] <- matrix :
number of items to replace is not a multiple of replacement length
またold.matrix
要素1への一つの値を代入しようとします:
indices <- seq(from = length(new.matrices) + 1, to = length(new.matrices) + reps)
new.matrices[indices] <- old.matrix
しかし、これはメッセージで結果:
これまでのところ、私はの線に沿ってのものを試してみましたnew.matrices
のように:
[[1]]
[1] 8687
[[2]]
[1] 1
[[3]]
[1] 5486
[[4]]
[1] 0
希望の結果が1つのリストeleme nt = 1つの行列全体、old.matrix
のコピー
リスト要素の行列をループせずにベクトル化する方法はありますか?現在どのようにループが実装されているのかは、何千もの反復を話しています。これはかなり遅くなるため、可能ならばベクトル化したいという私の望みです。
new.matrices [indices] < - rep(list(old.matrix)、length(indices)) ' – hadley
私は、作成しようとしているもののストレージオブジェクトを構築するためのより良い方法があると確信しています。後でいくつかの計算された行列でそれぞれのnew.matrices [[k]]を置き換えるつもりですか? (同じデータのN個のコピーを保存するのは意味がないようです)そうであれば、各リストエントリをあらかじめ作成する必要はありません。次の質問:リストが本当に必要なのか、それとも3番目のランク配列 'allmatrices [i、j、k]'、各層が 'oldmatrix'で十分ですか? –
行列は2行で、nはcolであり、個体が持つ遺伝子に関する情報を格納します。ここで起こっているのは、胞子による無性生殖です。列の数は遺伝子の数に依存する - 遺伝子は複製または削除することができます。 'new.matrices'はそれぞれ、さまざまな変異プロセスのために変更されます。したがって、old.matrix [20]の場合、20の子孫を作成し、new.matrixに20回入れてから、突然変異プロセスを実行する関数の対象となります。このリストはまた、結果目的のためにシム・サイクルごとに結果リストにコピーされます。 – Ward9250