In dit blog gaan we in op het datatype "vector" 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, verschillende soorten datasets uitleest in R, data manipuleert met bijvoorbeeld dplyr of data.table, of data visualiseert in bijvoorbeeld een histogram of boxplot.
1. Wat is een R vector?
Een vector is een eendimensionale verzameling van meerdere elementen (waarden) van hetzelfde datatype, bewaard in één variabele.
Een vector lijkt erg op een list. Een R list kan echter meerdere datatypes binnen dezelfde lijst bevatten.
Voorbeelden van vectors:
- Een lijst met leeftijden.
- Een lijst met namen van steden.
2. Een vector aanmaken
De syntax om een vector aan te maken is als volgt:
<variabele> <- c(<waarde 1>, ..., <waarde n>)
De c
is een functie en staat voor combine.
Zie onderstaand voorbeeld:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names
[1] "Amsterdam" "Utrecht" "Rotterdam" "Den Haag" "Eindhoven"
Met functie is()
bekijken we het datatype:
is(city_names)
[1] "character" "vector" "data.frameRowLabels"
[4] "SuperClassMethod"
We zien
"vector"
"character"
geeft aan dat de elementen in de vector tekst zijn
3. Eigenschappen van een vector
We hebben gezien dat een vector meerdere elementen kan bevatten.
3.1. Eén datatype
De elementen kunnen slechts van één datatype zijn.
Zie onderstaand voorbeeld:
ages <- c("five", 10, 34, 66, "sixteen")
ages
[1] "five" "10" "34" "66" "sixteen"
Je ziet dat alle elementen nu worden gezien als character (tekst).
3.2. Eén dimensie
Een vector kan slechts uit 1 dimensie bestaan.
Wanneer je als elementen weer vectoren zou gebruiken, wordt dit alsnog een een-dimensionale vector:
ages <- c(c("five", "sixteen"), c(10, 34, 66))
ages
[1] "five" "sixteen" "10" "34" "66"
4. Elementen selecteren
Ieder element heeft een index-nummer.
Zie onderstaand voorbeeld:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
"Amsterdam" | "Utrecht" | "Rotterdam" | "Den Haag" | "Eindhoven" | |
---|---|---|---|---|---|
index | 1 | 2 | 3 | 4 | 5 |
Dit heet 1-based indexing, omdat 1 het eerste nummer is.
4.1. Eén element selecteren
Een element selecteer je met de volgende syntax:
<individueel_element> <- <vector_variabele>[<indexnummer>]
Zie onderstaand voorbeeld:
"Amsterdam" | "Utrecht" | "Rotterdam" | "Den Haag" | "Eindhoven" | |
---|---|---|---|---|---|
index | 1 | 2 | 3 | 4 | 5 |
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names[3]
[1] "Rotterdam"
4.2. Meerdere elementen selecteren
Meerdere elementen selecteer je met de volgende syntax:
<elementen> <- <vector_variabele>[<indexnummer_start>:<indexnummer_stop>]
Zie onderstaand voorbeeld:
"Amsterdam" | "Utrecht" | "Rotterdam" | "Den Haag" | "Eindhoven" | |
---|---|---|---|---|---|
index | 1 | 2 | 3 | 4 | 5 |
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names[3:5]
[1] "Rotterdam" "Den Haag" "Eindhoven"
5. Vectors aanpassen
We bekijken de volgende aanpassingen:
Elementen aanpassen
Elementen toevoegen
Elementen verwijderen
5.1. Elementen aanpassen
5.1.1. Eén element aanpassen
Je past één element als volgt aan:
- Verwijs naar de index van de element
- Wijs een nieuwe waarde toe
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names[2] <- "Tilburg"
city_names
[1] "Amsterdam" "Tilburg" "Rotterdam" "Den Haag" "Eindhoven"
5.1.2. Meerdere elementen aanpassen
- Ook hier verwijs je naar de index
- Met een vector geef je nieuwe waarden op
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names[2:3] <- c("Tilburg", "Groningen")
city_names
[1] "Amsterdam" "Tilburg" "Groningen" "Den Haag" "Eindhoven"
5.2. Elementen toevoegen
Elementen voeg je toe door een nieuwe vector c()
te maken.
Zie onderstaand voorbeeld:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
additional_city_names <- c("Tilburg", "Groningen")
all_city_names <- c(city_names, additional_city_names)
all_city_names
[1] "Amsterdam" "Utrecht" "Rotterdam" "Den Haag" "Eindhoven" "Tilburg"
[7] "Groningen"
5.3. Elementen verwijderen
Door gebruik te maken van de index kunnen we elementen selecteren:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
city_names[2]
[1] "Utrecht"
Door een minteken -
voor het indexnummer te plaatsen verwijder je een element:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
filtered_city_names <- city_names[-2]
filtered_city_names
[1] "Amsterdam" "Rotterdam" "Den Haag" "Eindhoven"
Als je meerdere elementen wilt verwijderen benoem je de indexnummers tussen ronde haken ()
:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
filtered_city_names <- city_names[-(2:3)]
filtered_city_names
[1] "Amsterdam" "Den Haag" "Eindhoven"
6. Aantal elementen in een vector
- R kent de functie
length()
. - Daarmee verkrijg je het aantal elementen van een vector.
city_names <- c("Amsterdam", "Utrecht", "Rotterdam", "Den Haag", "Eindhoven")
length(city_names)
[1] 5
R Vector: om te onthouden
- Een vector bevat meerdere elementen (waarden),
- Van hetzelfde datatype
- Eendimensionaal
- Voorbeeld:
city_names <- c("Amsterdam", "Utrecht", "Rotterdam")
- Elementen selecteren
- 1-based indexing
- Voorbeeld:
city_names[1]
ofcity_names[2:3]
- Vector aanpassen
- Elementen aanpassen: gebruik indexnummer, bijvoorbeeld:
city_names[1] <- "Tilburg"
- Elementen toevoegen: gebruik een nieuwe vector, bijvoorbeeld:
all_city_names <- c(city_names, c("Tilburg"))
- Elementen verwijderen: gebruik het minteken en indexnummer, bijvoorbeeld:
city_names[-1]
- Elementen aanpassen: gebruik indexnummer, bijvoorbeeld:
- Aantal elementen: gebruik functie
length()
, bijvoorbeeld:length(city_names)
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.
Rik is data scientist en marketeer bij Data Science Partners. Vanuit zijn achtergrond op de Technische Universiteit Eindhoven heeft hij veel affiniteit met data. Na zijn studie heeft hij als consultant altijd met data gewerkt en tevens ervaring opgedaan in het geven van trainingen.