In dit blog gaan we in op het datatype "list" in R. Het is een verdieping op ons artikel over Datatypes in R.
Het blog is een onderdeel van een blogserie over R waarin we o.a. ingaan op hoe je R installeert, hoe je in RStudio werkt, data manipuleert met bijvoorbeeld dplyr of data.table, of data visualiseert in bijvoorbeeld een histogram of boxplot.
Inhoud
In dit blog vind je meer informatie over:
- Wat is een list in R?
- Hoe maak je een list aan in R?
- Waarden uit een list toevoegen, aanpassen, of verwijderen
- Named lists in R
- Een korte samenvatting
1. Wat is een list in R?
Een list is een een- of meerdimensionale verzameling van mogelijk meerdere elementen (waarden), van mogelijk meerdere datatypes, bewaard in één variabele.
Het datatype list lijkt op het datatype vector. In dit blog vind je meer informatie over vectoren in R.
Hierdoor kunnen de elementen van een list bijvoorbeeld zelf ook weer een list of vector zijn.
2. Een list aanmaken in R
De syntax om een list aan te maken is als volgt:
<variabele> <- list(<waarde 1>, ..., <waarde n>)
Zie onderstaand voorbeeld:
city_names <- list("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names
[[1]]
[1] "Amsterdam"
[[2]]
[1] "Utrecht"
[[3]]
[1] "Rotterdam"
[[4]]
[1] "Den Haag"
[[5]]
[1] "Eindhoven"
En voor elementen met verschillende datatypes werkt dit hetzelfde:
example_list <- list("Amsterdam", 123, c("low", "medium"), TRUE)
example_list
[[1]]
[1] "Amsterdam"
[[2]]
[1] 123
[[3]]
[1] "low" "medium"
[[4]]
[1] TRUE
Met functie is()
bekijken we het datatype:
is(example_list)
[1] "list" "vector"
We zien het data type "list"
inderdaad naar voren komen.
3. Selecteren en aanpassen
Het selecteren en aanpassen van lists doe je op dezelfde manier als bij vectoren.
- Gebruik 1-based indexing en blokhaken voor selecties en toewijzingen
- Gebruik het minteken voor het verwijderen van een selectie
Ter verduidelijking zullen we enkele voorbeelden laten zien.
3.1. Selecteren
We starten met het selecteren van enkele elementen.
example_list <- list("Amsterdam", 123, c("low", "medium"), TRUE)
example_list[2:3]
[[1]]
[1] 123
[[2]]
[1] "low" "medium"
Op deze manier hebben we het tweede en derde element uit de lijst geselecteerd.
3.2. Aanpassen
We gaan het tweede element uit de lijst wijzigen naar een ander getal.
example_list <- list("Amsterdam", 123, c("low", "medium"), TRUE)
example_list[2] <- 999
example_list
[[1]]
[1] "Amsterdam"
[[2]]
[1] 999
[[3]]
[1] "low" "medium"
[[4]]
[1] TRUE
We zien dat het gelukt is het getal te wijzigen.
3.3. Verwijderen
We zullen nu een element verwijderen uit de R list.
example_list <- list("Amsterdam", 123, c("low", "medium"), TRUE)
example_list <- example_list[-2]
example_list
[[1]]
[1] "Amsterdam"
[[2]]
[1] "low" "medium"
[[3]]
[1] TRUE
We zien dat het verwijderen inderdaad is gelukt.
4. Named list
Je kunt ook een zogenaamde named list maken in R.
Daarbij geef je de elementen in de list een naam.
Zie onderstaand voorbeeld:
inhabitants <- list(
amsterdam = 805166,
rotterdam = 614543,
den_haag = 507611)
inhabitants
$amsterdam
[1] 805166
$rotterdam
[1] 614543
$den_haag
[1] 507611
Let op: je definieert de naam - waarde paren met het =
teken.
4.1. Waarden selecteren
Je verkrijgt de waarde van een element door met een $
teken naar de naam te verwijzen.
inhabitants <- list(
amsterdam = 805166,
rotterdam = 614543,
den_haag = 507611)
inhabitants$rotterdam
[1] 614543
We krijgen hier de waarde voor rotterdam terug zoals verwacht.
4.2. Elementen selecteren uit een named list
Je verkrijgt een element door met blokhaken []
en de naam tussen dubbele apostrofs ""
.
inhabitants <- list(
amsterdam = 805166,
rotterdam = 614543,
den_haag = 507611)
inhabitants["rotterdam"]
$rotterdam
[1] 614543
Let op: je verkrijgt hier het element met de naam.
Wil je alleen de waarde, gebruik dan een dubbele set blokhaken:
inhabitants <- list(
amsterdam = 805166,
rotterdam = 614543,
den_haag = 507611)
inhabitants[["rotterdam"]]
[1] 614543
De R List: om te onthouden
- Een list kan meerdere elementen (waarden) bevatten met meerdere datatypes. Een R list kan bovendien meerdimensionaal zijn.
- Voorbeeld:
example_list <- list("Amsterdam", 123, c("low", "medium"), TRUE)
- Selecteren en aanpassen werkt volgens 1-based indexing. Bijvoorbeeld:
example_list[1] <- "Rotterdam"
example_list <- example_list[-1]
- Named list: geef elementen uit een lijst een naam, zoals
example_named_list <- list(amsterdam = 805166, rotterdam = 614543)
- Een element selecteren doe je in dat geval met blokhaken en dubbele apostrofs. Bijvoorbeeld:
example_named_list["rotterdam"]
voor de waarde met naam. Ofexample_named_list[["rotterdam"]]
voor alleen de waarde van het element - Een waarde selecteren doe je als volgt met een dollartaken:
example_named_list$rotterdam
- Een element selecteren doe je in dat geval met blokhaken en dubbele apostrofs. Bijvoorbeeld:
Wil jij goed leren werken in R? Tijdens onze Opleiding R leer je alles wat je nodig hebt om zelfstandig analyses uit te voeren in R.
Peter is een ervaren data scientist en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.