ループ内のリストに要素を追加したい(正確な数はわかりません)
このような:
l <- list();
while(...)
l <- new_element(...);
最後に、l[1]
最初の要素、l[2]
2 番目の要素などになります。
どのように進めればよいかご存知ですか?
ベストアンサー1
ループ内でを使用してリストに追加しないでくださいc
。非常に遅いコードになる可能性があるためです。基本的に を使用するとc(l, new_element)
、リストの内容全体がコピーされます。その代わりに、インデックスでリストの要素にアクセスする必要があります。リストの長さがわかっている場合は、 を使用してこのサイズに初期化するのが最適ですl <- vector("list", N)
。わからない場合は、長さを大きな数 (たとえば、反復回数に上限がある場合) に初期化し、ループが終了した後に NULL 以外の要素を選択するだけです。とにかく、基本的なポイントは、リスト要素を追跡するためのインデックスが必要であり、それを使用して追加する必要があるということです。
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
詳細については、パトリック・バーンズのRインフェルノ(第2章)。