Elemente an eine Liste in R anhängen

Gustavo du Mortier 30 Januar 2023
  1. Anhängen an eine Liste in R mit der Funktion length
  2. Setzen einer Obergrenze für die Liste
Elemente an eine Liste in R anhängen

Es gibt viele Möglichkeiten, eine Schleife zu verwenden, um eine beliebige Anzahl von Elementen an eine Liste in R anzuhängen. Einige davon können bei einer hohen Anzahl von Elementen träge werden. In diesem Tutorial werden die effizientesten Möglichkeiten vorgestellt, um in einer R-Schleife Elemente an eine Liste anzuhängen.

Ein üblicher Weg, einen solchen Algorithmus zu implementieren, wäre, eine while-Schleife zu erstellen und innerhalb der Schleife den Befehl c (concatenate) zu verwenden. Innerhalb jeder Iteration wird ein Element mit Hilfe der Funktion c hinzugefügt. In diesem Beispiel wird ein Wert (i*3) zu einer Liste hinzugefügt, bis die Indexvariable 10.000 erreicht:

i <- 1
mylist <- c()

while (i<10) {
    mylist <- c(mylist, i*3)
    i <- i+1
}

cat(mylist)

Ausgabe:

3 6 9 12 15 18 21 24 27

Das Problem mit dem vorherigen Beispiel ist, dass bei jeder Ausführung der Verkettung die gesamte Liste kopiert wird. Bei der Arbeit mit großen Datensätzen kann die Zeit, die für das Hinzufügen aller Elemente benötigt wird, enorm sein.

Anhängen an eine Liste in R mit der Funktion length

Ein effizienterer Ansatz, um innerhalb einer Schleife eine beliebige Anzahl von Elementen an eine Liste anzuhängen, ist die Verwendung der Funktion length in jeder Iteration. Mit der Funktion length können Sie die Anzahl der Elemente in der Liste ermitteln und jedes neue Element dem Index hinter dem letzten Element zuordnen: length(mylist) + 1.

Das folgende Beispiel macht das Gleiche wie das vorherige, nur effizienter.

i <- 1
mylist <- c()

while (i<10) {
    mylist[[(length(mylist) + 1)]] <- i*3
    i <- i+1
}

cat(mylist)

Ausgabe:

3 6 9 12 15 18 21 24 27

Setzen einer Obergrenze für die Liste

Wenn Sie vorher wissen, wie oft Ihre Schleife iterieren wird, dann können Sie, anstatt eine Liste von Elementen wachsen zu lassen, einen Vektor mit fester Länge definieren und ihn verwenden, um alle Elemente zu halten. Wenn Sie zum Beispiel wissen, dass Ihre Schleife 10.000 Mal iterieren wird, können Sie den Vektor auf diese Weise initialisieren:

mylist <- vector("list", 10000)

Danach können Sie eine for-Schleife verwenden und den Wert jedes Elements durch seinen Index setzen:

i <- 1
for (i in 1:10000) {
    mylist[[i]] <- i*3
}

Wenn Sie die Anzahl der Iterationen nicht kennen, aber eine obere Schranke für sie haben, können Sie den Vektor mit dieser oberen Schranke definieren. Später, wenn die Schleife die Ausführung beendet hat, können Sie nur die Nicht-Null-Elemente auswählen. Wenn Sie z. B. wissen, dass Ihre Schleife nicht mehr als 10.000 Mal iterieren wird, können Sie Ihren Vektor mit 10.000 Elementen initialisieren, auch wenn Sie sie nicht alle verwenden werden.

Verwandter Artikel - R Loop