web-dev-qa-db-de.com

Hinzufügen von Elementen zu einer Liste in R (Schleife)

Ich möchte einer Liste in einer Schleife Elemente hinzufügen (ich weiß nicht genau, wie viele)

So was:

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

Am Ende, l[1] wäre mein erstes Element, l[2] mein zweiter und so weiter.

Wissen Sie, wie es weitergeht?

89
Philippe Remy

Sie sollten Ihre Liste nicht mit c innerhalb der Schleife erweitern, da dies zu sehr sehr langsamem Code führen kann. Grundsätzlich wird beim Ausführen von c(l, new_element) der gesamte Inhalt der Liste kopiert. Stattdessen müssen Sie über den Index auf die Elemente der Liste zugreifen. Wenn Sie wissen, wie lang Ihre Liste sein wird, initialisieren Sie sie am besten mit l <- vector("list", N) auf diese Größe. Wenn Sie dies nicht tun, können Sie die Länge so initialisieren, dass sie einer großen Zahl entspricht (z. B. wenn Sie eine Obergrenze für die Anzahl der Iterationen haben), und dann einfach die Nicht-NULL-Elemente auswählen, nachdem die Schleife beendet ist. Der grundlegende Punkt ist jedenfalls, dass Sie einen Index haben sollten, um das Listenelement zu verfolgen und mit diesem hinzuzufügen, z

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

Weitere Informationen finden Sie in Patrick Burns ' The R Inferno (Kapitel 2).

142
konvas

Im Folgenden werden einer Liste in einer Schleife Elemente hinzugefügt.

l<-c()
i=1

while(i<100) {

    b<-i
    l<-c(l,b)
    i=i+1
}
15
Jason