Vorrei aggiungere elementi a una lista in un ciclo (non so esattamente quanti)
In questo modo:
l <- list();
while(...)
l <- new_element(...);
Alla fine, l[1]
sarebbe il mio primo elemento, l[2]
il mio secondo e così via.
Sapete come procedere?
Non dovreste aggiungere alla vostra lista usando c
all'interno del ciclo, perché questo può risultare in un codice molto molto lento. Fondamentalmente quando fate c(l, new_element)
, l'intero contenuto della lista viene copiato. Invece di questo, avete bisogno di accedere agli elementi della lista per indice. Se sapete quanto sarà lunga la vostra lista, è meglio inizializzarla a questa dimensione usando l <- vector("list", N)
. Se non lo fai, puoi inizializzarlo per avere una lunghezza uguale a un qualche numero grande (ad esempio se hai un limite superiore al numero di iterazioni) e poi semplicemente prendere gli elementi non-NULL dopo che il ciclo è finito. Comunque, il punto fondamentale è che dovresti avere un indice per tenere traccia dell'elemento della lista e aggiungere usando quello, ad esempio
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
Per maggiori informazioni date un'occhiata a Patrick Burns' The R Inferno (Capitolo 2).