Rでリストに要素を追加する方法(ループ) [重複] 質問する

Rでリストに要素を追加する方法(ループ) [重複] 質問する

ループ内のリストに要素を追加したい(正確な数はわかりません)

このような:

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章)。

おすすめ記事