R-Lists: So können Sie eigene Listen in R erstellen

Die Datenstruktur einer Liste findet sich in vielen verschiedenen Programmiersprachen. In R sind Listen vor allem dann praktisch, wenn Sie Daten zusammenfassen möchten, die unterschiedlichen R-Datentypen angehören.

Wofür werden R-Lists genutzt?

Listen sind eine vielseitig einsetzbare Datenstruktur, die in R außerdem ein eigener Datentyp ist. Insbesondere in dynamischen Programmierumgebungen, also dann, wenn flexibel Elemente verschiedenster Datentypen hinzugefügt und entfernt werden sollen, sind Listen bestens geeignet. Im Gegensatz zu R-Vektoren ist es bei Listenelementen nicht wichtig, welchen Datentyp sie haben: Die Möglichkeit, Datentypen innerhalb einer Liste zu mischen, ist einer der Kernvorteile von R-Lists. Da Sie Listen beliebig ineinander schachteln können, ist es mithilfe von R-Lists möglich, komplexe Sachverhalte im Quellcode darzustellen.

Tipp

Wenn Sie Ihre R-Programme online bereitstellen möchten, kann Ihnen dabei der Webspace von IONOS helfen. Sie profitieren hierbei von mindestens 50 GB Speicher für Ihre Projekte.

Create List in R: So erstellen Sie R-Lists

list()-Funktion

Um eine einfache R-List zu erstellen, können Sie die gleichnamige Funktion list() benutzen, der Sie die Elemente übergeben, die Ihrer Liste hinzugefügt werden sollen.

liste <- list(1, TRUE, "Hallo Welt!", c(1,2,3,4))
R

In diesem Codebeispiel wurde eine Liste mit vier Werten erstellt. Wie Sie sehen können, haben diese Werte keinen identischen Datentyp und können trotzdem innerhalb einer Liste zusammengefasst werden.

Sie haben in R außerdem die Möglichkeit, eine Liste mit benannten Elementen zu erstellen. Dies ermöglicht einen einfachen Zugriff auf bestimmte Elemente aus Ihrer R-List.

person <-list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino"))
R

Sie können Listen auch weitere Listen als Elemente übergeben und auf diese Weise beispielsweise verschiedene Listen zu einem Datensatz zusammenfassen:

personen <- list(list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino")), list(name = "Mia Musterfrau", alter = 32, hobbys = c("Theater, Computerspiele")), list(name = "Mika Mustermensch", alter =23, hobbys = c("Sport, Musik")))
R

Listen aus Vektoren erstellen

Sie können Listen auch aus R-Vektoren erstellen, indem Sie diese in eine Liste umwandeln. Auch hierfür stellt R eine Funktion bereit.

vektor <- c(1,2,3,4)
liste <- as.list(vektor)
R

Listen in andere Datenstrukturen umwandeln

Obwohl R-Lists eine vielseitig einsetzbare Datenstruktur sind, kann es sein, dass Sie für gewisse Anwendungszwecke andere Datenstrukturen wie zum Beispiel Vektoren oder Dataframes benötigen. Ist dies der Fall, wandeln Sie Ihre Liste einfach um.

R-List to Vektor: So erstellen Sie Vektoren aus Listen

Wenn Sie Ihre Liste in einen R-Vektor umwandeln möchten, verwenden Sie die Funktion unlist(). Diese nimmt als Übergabeparameter eine R-List und wandelt diese in einen Vektor um. Die Liste, die Sie der Funktion übergeben, kann auch mehrdimensional sein. Oft ist ein Aufruf von unlist() hilfreich, wenn Sie komplexe Hierarchien in einer einfachen Vektorform darstellen möchten.

liste <- list(1, 2, 3, 4)
vektor <- unlist(liste)
R

Wenn Sie eine Liste, die Daten verschiedener Datentypen enthält, in einen Vektor umwandeln, kann es zu unerwünschtem und undefiniertem Verhalten kommen, da Vektoren in R standardmäßig nur Daten desselben Datentyps speichern können. Ein Aufruf von unlist() ist also nur dann zu empfehlen, wenn die Elemente Ihrer Liste denselben Datentyp haben.

In folgendem Codebeispiel werden alle Werte aus der Liste für die Speicherung im R-Vektor in den Datentyp character umgewandelt.

liste <- list(1, TRUE, "Hallo Welt!", c(1,2,3,4))
vektor <- unlist(liste)
R

R-List to Dataframe: Listen in Dataframes umwandeln

R-Dataframes werden unter anderem für die tabellarische Darstellung von Datensätzen verwendet. Gerade mehrdimensionale Listen können daher sinnvoll in R-Dataframes umgewandelt werden. Hierbei ist zu beachten, dass die Listen dieselbe Anzahl an Elementen haben müssen. Für die Umwandlung einer R-List in einen Dataframe stellt R die Funktion data.frame() bereit, die als Übergabeparameter die Liste erwartet, die umgewandelt werden soll.

personen <- list(name=c("Max", "Mia", "Mika"), alter=c(27, 32, 23))
tabelle <- data.frame(personen)
print(tabelle)
R

Der Dataframe, der durch den obigen Code erstellt wird, sieht wie folgt aus:

    name alter
1  Max    27
2  Mia    32
3  Mika    23
R

Elementzugriff in R-Lists

Um auf Elemente in Ihrer Liste zuzugreifen, könnten Sie entweder den Index, oder – wenn vorhanden – den Namen des gewünschten Elements nutzen.

Zugriff via Index

Für den Zugriff auf die Listenelemente benötigen Sie den R-Operator [[]], in den Sie den Index oder Namen einfügen.

liste <- list(1, TRUE, "Hallo Welt!", c(1,2,3,4))
print(liste[[2]])
R

Dieser Code liefert Ihnen TRUE, also das zweite Element aus der Liste, zurück. Beachten Sie, dass die Indizierung in R bei eins beginnt. Wenn Sie bereits Programmiererfahrung haben und nicht gerade erst das Programmieren lernen, können hier schnell Fehler auftreten, da die Indizierung in den meisten anderen Programmiersprachen bei null startet.

Zugriff via Elementnamen

Wie bereits erwähnt können Listenelemente in R benannt werden. Diese Namen lassen sich bei Bedarf für den Elementzugriff verwenden. Für den Elementzugriff über den Namen gibt es zwei verschiedene Varianten: Sie können doppelte eckige Klammern in Kombination mit dem Elementnamen als R-String oder das Dollarzeichen gefolgt vom Elementnamen nutzen. Ein Codebeispiel hilft zur Veranschaulichung:

person <-list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino"))
print(person[["name"]])
print(person$name)
R

In beiden Fällen wird durch das print-Statement "Max Mustermann" auf dem Bildschirm ausgegeben.

List Functions in R: Die wichtigsten Funktionen

Wenn Sie mit Listen arbeiten, gibt es eine Reihe nützlicher R-Funktionen, die Ihnen dabei helfen, bestimmte Operationen durchzuführen.

append()

Mit append() können Sie Elemente am Ende Ihrer Liste einfügen. Die Funktion erwartet als ersten Übergabeparameter die Liste, an die das Element angehangen werden soll, und als zweiten Parameter das einzufügende Element.

liste <-list(1,2,3,4)
append(liste, 5)
R
Hinweis

Wenn das einzufügende Element einen Namen hat, können Sie diesen im Funktionsaufruf einfach mitangeben.

Die append()-List-Function in R ist nicht die einzige Möglichkeit, Elemente zu Ihrer Liste hinzuzufügen. Oftmals funktioniert die Indexschreibweise mit doppelten eckigen Klammern, in der Sie einen noch nicht existenten Index nutzen, die schnellere Variante:

liste <-list(1,2,3,4)
liste[[5]] <-5
R

length()

Mit einem Aufruf des R-Commands length() können Sie herausfinden, wie viele Elemente Ihre Liste beinhaltet. Die Funktion erwartet als Übergabeparameter die Liste, deren Länge Sie interessiert.

liste <- list(1,2,3,4)
print(length(liste))
R

Konkatenation mit c()

In R können Sie zwei Listen zu einer Liste zusammenfassen. Hierfür ist die Funktion c() zu verwenden, die als Parameter beide Listen erwartet und eine konkatenierte Liste zurückliefert.

liste1 <- list(1,2,3,4)
liste2 <- list(5,6,7,8)
liste_konkateniert <- c(liste1, liste2)
R

names()

Wenn Sie eine R-List mit Namen erstellt haben, lassen Sie sich mit der R-List-Function names() die Namen der Objekte Ihrer Liste anzeigen. Die Funktion erwartet als Übergabeparameter eine Liste.

person <-list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino"))
bezeichner <- names(person)
R