Chcel by som v cykle pridávať prvky do zoznamu (neviem presne koľko)
Takto:
l <- list();
while(...)
l <- new_element(...);
Na konci by l[1]
bol môj prvý prvok, l[2]
môj druhý prvok atď.
Viete, ako postupovať?
Nemali by ste pridávať do zoznamu pomocou c
vnútri cyklu, pretože to môže viesť k veľmi pomalému kódu. Keď vykonáte c(l, new_element)
, v podstate sa skopíruje celý obsah zoznamu. Namiesto toho musíte pristupovať k prvkom zoznamu podľa indexu. Ak viete, aký dlhý bude váš zoznam, najlepšie je inicializovať ho na túto veľkosť pomocou l <- vector("list", N)
. Ak to neviete, môžete ho inicializovať tak, aby mal dĺžku rovnú nejakému veľkému číslu (napr. ak máte hornú hranicu počtu iterácií), a potom po skončení cyklu jednoducho vybrať prvky, ktoré nie sú NULL. Každopádne, základom je, že by ste mali mať index na sledovanie prvku zoznamu a pridávať pomocou neho, napr.
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
Viac informácií nájdete v knihe Patricka Burnsa The R Inferno (kapitola 2).