Basisvaardigheden in R: Werken met datastructuren
Lijst
Wat is een lijst in R? In de afbeelding hieronder zie je de tot nu toe behandelde gegevensstructuren plus nog één, namelijk een lijst. Herinner je je dat:
- een vector een eindige reeks objecten van hetzelfde gegevenstype is;
- een matrix een tweedimensionaal object is met elementen in rijen en kolommen van hetzelfde datatype;
- een dataframe een tweedimensionaal object is met elementen in rijen en kolommen, maar de kolommen kunnen verschillen in datatype;
- een array een multidimensionaal object is met elementen van hetzelfde datatype.
In een matrix, een dataframe of een array hebben alle reeksen in een bepaalde dimensie dezelfde lengte. Wat ontbreekt, is een datastructuur waarin je een verscheidenheid aan (mogelijk niet-gerelateerde) objecten onder één naam kunt verzamelen. Deze gegevensstructuur in R wordt een list (lijst) genoemd. Een lijst kan bijvoorbeeld een combinatie bevatten van vectoren, matrices, dataframes en zelfs andere lijsten.
![data structures data structures](/images/uploads/theory/17064/datastructures.png)
Working with lists in R
Uitleg
Je maakt een lijst met de functie list()
. Tussen de haakjes plaats je de objecten die je in je lijst wilt opslaan, gescheiden door komma's.
Selectie van een lijstelement gebeurt via dubbele vierkante haken
[[...]]
.De voorbeeldsessie aan de rechterkant illustreert het werken met lijsten.
Voorbeeldessie
> veel_gelezen_boeken <- c("Bijbel", "Koran") > grootste_land_populaties <-
+ c(1413, 1399, 335) # in millioenen > magisch_vierkant <- matrix(c(4,3,8,9,5,1,
+ 2,7,6), nrow=3) > mijn_lijst <- list(
+ boeken = veel_gelezen_boeken, + grootste_land_populaties,
+ magisch_vierkant) > mijn_lijst $boeken [1] "Bijbel" "Koran" [[2]] [1] 1413 1399 335 [[3]] [,1] [,2] [,3] [1,] 4 9 2 [2,] 3 5 7 [3,] 8 1 6 > mijn_lijst[[3]] # selectie 3de lijst element [,1] [,2] [,3] [1,] 4 9 2 [2,] 3 5 7 [3,] 8 1 6
> # selectie 1ste lijst element
> mijn_lijst[["boeken"]] [1] "Bijbel" "Koran"
> mijn_lijst$boeken [1] "Bijbel" "Koran"
> # selectie 3de element van 2de lijst element
> mijn_lijst[[c(2,3)]] [1] 335