Beispiel: List Basics
Sogenannte Listen sind die wohl flexibleste Daten Struktur in R.
Erzeugen einer Liste
Eine Liste wird mit der list
Funktion erzeugt.
my_list_1 <- list(c(1,2,3,4,5))
my_list_1
## [[1]]
## [1] 1 2 3 4 5
my_list_2 <- list(x=c(2.5, 3.5), y=c(5, 10))
my_list_2
## $x
## [1] 2.5 3.5
##
## $y
## [1] 5 10
my_list_3 <- list(name=c("A", "B", "C"), my_list_2)
my_list_3
## $name
## [1] "A" "B" "C"
##
## [[2]]
## [[2]]$x
## [1] 2.5 3.5
##
## [[2]]$y
## [1] 5 10
Listen können strukturiert und geschachtelt werden (d.h. Liste in der Liste):
my_list_4 <- list(c(1,2,3,4,5), c("A", "B", "C"))
my_list_4
## [[1]]
## [1] 1 2 3 4 5
##
## [[2]]
## [1] "A" "B" "C"
Struktur einer Liste
Um die Länge einer Liste also die Anzahl seiner Elemente zu erhalten dient die length
Funktion:
length(my_list_3)
## [1] 2
str(my_list_3)
## List of 2
## $ name: chr [1:3] "A" "B" "C"
## $ :List of 2
## ..$ x: num [1:2] 2.5 3.5
## ..$ y: num [1:2] 5 10
Im Falle einer strukturierten Liste, dient die length
Funktion um die Dimension der äußeren Liste zu ermitteln:
length(my_list_4)
## [1] 2
str(my_list_4)
## List of 2
## $ : num [1:5] 1 2 3 4 5
## $ : chr [1:3] "A" "B" "C"
Anzeigen und Zugreifen auf den Inhalt einer Liste
Um auf Elemente einer Liste zugreifen zu können, müssen Sie die Position des Elements in der Liste innerhalb doppelter eckiger Klammern (nicht in einfachen Klammern wie es bei Vektoren der Fall ist) addressieren.
my_list_2[[1]]
## [1] 2.5 3.5
my_list_2[[1]][2]
## [1] 3.5
my_list_3[[2]][[1]][1]
## [1] 2.5
Ändern Hinzufügen oder Löschen eines Listenelements
Um ein Element hinzuzufügen, müssen Sie der Liste einen neuen Vektor an eine definierte Position schreiben. Um ein Element einer Liste zu überschreiben, müssen Sie es mit der obigen Zugriffslogik auf den/die Wert(e) setzen:
# add an element to a list
my_list <- list(c(1,2,3,4,5))
my_list
## [[1]]
## [1] 1 2 3 4 5
my_list[[2]] <- c("A", "B")
my_list
## [[1]]
## [1] 1 2 3 4 5
##
## [[2]]
## [1] "A" "B"
# overwrite a list element
my_list[[2]] <- c("G", "H")
my_list
## [[1]]
## [1] 1 2 3 4 5
##
## [[2]]
## [1] "G" "H"
Um ein Element tatsächlich zu löschen, muss es auf NULL
gesetzt werden.
my_list[[2]] <- NULL
my_list
## [[1]]
## [1] 1 2 3 4 5
Für mehr Informationen kann unter den folgenden Ressourcen nachgeschaut werden: data type Dort finden Sie auch Information über Objekte.
Natürlich ist es auch immer eine gute Idee, in die Paketdokumentation zu schauen oder im Internet zu suchen.