Lijsten (lists) maken in R
Net als bij een data frame, kan een matrix rij- en kolomnamen bevatten. Dit is heel handig als je bijvoorbeeld later data wilt opzoeken uit specifieke rijen en kolommen. Om dit te demonstreren, maken we een matrix waarin we voor een aantal personen een aantal eigenschappen bijhouden. Hierbij zetten we de namen van de personen op de rijen en de eigenschappen op de kolomnamen.
# lijsten aanmaken van persoonsgegevens
Harry <- list(
voornaam = "Harry", achternaam = "de Hengst", lengte = 1.87,
gewicht = 81.3, woonplaats = "Leiden", rookt = FALSE, studie = "Bedrijfskunde",
geslacht = "M", leeftijd = 21
)
Key-value pair in lists
Lijsten (lists) zijn hele handige objecten in R. Lists bestaan namelijk uit vectoren die een naam hebben, in dit geval bijvoorbeeld leeftijd
, voornaam
, rookt
enzovoort. Deze namen worden keys genoemd, de waarden achter deze namen worden values genoemd. Hierdoor spreek je over key - value pairs, of in Nederlands: de naam van de vector en de waarde in deze vector. Door deze opbouw, kun je net zoals bij een dataframe met de $
operator de waarde achter een key oproepen.
Verschillende datatypes opslaan in lists
Een sterk punt van de list
structuur is dat je waarden van verschillende datatypen er in kunt opslaan. Dit kan niet met een vector. Als je namelijk een vector maakt die allemaal numerieke waarden heeft en slechts een enkele character
waarde, wordt de vector gelijk omgezet naar een character
vector. Hierdoor worden alle numerieke waarden in de vector gelijk onbruikbaar. Dit probleem heb je met een list
echter niet. Iedere waarde in een list heeft zijn eigenschappen.
waardenVector <- c(1, 2, 3, 4, "Woord")
waardenVector
## [1] "1" "2" "3" "4" "Woord"
class(waardenVector)
## [1] "character"
waardenLijst <- list(1, 2, 3, 4, "Woord")
waardenLijst
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
##
## [[3]]
## [1] 3
##
## [[4]]
## [1] 4
##
## [[5]]
## [1] "Woord"
class(waardenLijst)
## [1] "list"
Je kunt aan de aanhalingstekens bij de nummers in de waardenVector
zien dat de nummers omgezet zijn naar het character
datatype. Dit is bij de waardenLijst
echter niet zo.
class(Harry)
## [1] "list"
# de leeftijd van Harry terugvinden
Harry$leeftijd
## [1] 21
# de gehele 'Harry' lijst weergeven
Harry
## $voornaam
## [1] "Harry"
##
## $achternaam
## [1] "de Hengst"
##
## $lengte
## [1] 1.87
##
## $gewicht
## [1] 81.3
##
## $woonplaats
## [1] "Leiden"
##
## $rookt
## [1] FALSE
##
## $studie
## [1] "Bedrijfskunde"
##
## $geslacht
## [1] "M"
##
## $leeftijd
## [1] 21
Key-value pairs kom je in de Business Intelligence en Analytics wereld steeds meer tegen. Dit is een van de meeste gebruikte datastructuren die onder NoSQL categorie vallen. De JSON-datastructuur werkt ook met key-value pairs , daarom wordt JSON-data in R geïnterpreteerd als een
list
datatype.
Het is niet verplicht om de namen in een lijst een naam te geven. Het nadeel hiervan is echter dat je deze dan ook niet kunt oproepen zoals in het vorige voorbeeld.
Japie <- list("Japie","Krekel", 1.47, 65.3, "Utrecht", TRUE,"Rechten","M",23)
Roos <- list("Roos","Jansen", 1.67, 60, "Utrecht", FALSE,"Geneeskunde","V",25)
Hans <- list("Hans","Klock", 1.78, 78.2, "Utrecht", FALSE,"Bedrijfskunde","M",20)
Marco <- list("Marco","Polo", 1.89, 81.3, "Leiden", FALSE,"Rechten","M",19)
Erica <- list("Erica","Jansen", 1.53, 65.3, "Leiden", TRUE,"Geneeskunde","V",27)