Hoe voeg je elementen toe aan een lijst in R (loop)

Ik wil graag elementen aan een lijst toevoegen in een lus (ik weet niet precies hoeveel)

Zoals dit:

l <- list();
while(...)
   l <- new_element(...);

Uiteindelijk zou l[1]mijn eerste element zijn, l[2]mijn tweede enzovoort.

Weet je hoe je verder moet?


Antwoord 1, autoriteit 100%

Je moet niet aan je lijst toevoegen door cin de lus te gebruiken, omdat dat kan resulteren in heel erg trage code. Als je c(l, new_element)doet, wordt in principe de hele inhoud van de lijst gekopieerd. In plaats daarvan moet u de elementen van de lijst per index benaderen. Als u weet hoe lang uw lijst zal zijn, kunt u deze het beste initialiseren met l <- vector("list", N). Als je dat niet doet, kun je het initialiseren zodat het een lengte heeft die gelijk is aan een groot aantal (bijvoorbeeld als je een bovengrens hebt voor het aantal iteraties) en dan gewoon de niet-NULL-elementen kiezen nadat de lus is voltooid. Hoe dan ook, het basispunt is dat je een index moet hebben om het lijstelement bij te houden en dat toe te voegen, bijvoorbeeld

i <- 1
while(...) {
    l[[i]] <- new_element
    i <- i + 1
}

Bekijk voor meer informatie Patrick Burns’ The R Inferno(hoofdstuk 2) .


Antwoord 2, autoriteit 4%

Het volgende voegt in een lus elementen toe aan een lijst.

l<-c()
i=1
while(i<100) {
    b<-i
    l<-c(l,b)
    i=i+1
}

Other episodes