Ik wil elementen toevoegen aan een lijst in een lus (ik weet niet precies hoeveel)
Zoiets als dit:
l <- list();
while(...)
l <- new_element(...);
Aan het eind, l[1]
zou mijn eerste element zijn, l[2]
mijn tweede enzovoort.
Weet je hoe het verder moet?
Je moet niet toevoegen aan je lijst met c
binnen de lus, omdat dat kan resulteren in zeer trage code. Als je c(l, new_element)
doet, wordt de hele inhoud van de lijst gekopieerd. In plaats daarvan moet je de elementen van de lijst per index benaderen. Als je weet hoe lang je lijst gaat worden, is het'het beste om hem op deze grootte te initialiseren met l <- vector("list", N)
. Als je dat niet doet, kun je hem initialiseren met een lengte gelijk aan een of ander groot getal (bijvoorbeeld als je een bovengrens hebt voor het aantal iteraties) en dan gewoon de niet-NULL elementen kiezen nadat de lus is afgelopen. Hoe dan ook, het basispunt is dat je een index moet hebben om het lijstelement bij te houden en met behulp daarvan bijv.
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
Kijk voor meer info eens naar Patrick Burns' The R Inferno (Hoofdstuk 2).