Les 2. Inlezen, bewerken en bewaren
2.2 vectoren
Deze les en de volgende 2 zijn een uitbreiding van les 2.1. Her en der zal er wat overlap zijn, maar dan gaat de tekst dieper in op verschillende onderwerpen.
Zoals ik in 2.1 zei is voor het inlezen van kleine hoeveelheden gegevens is de functie “c” het handigst
> y = c(2,5,4,9,1,0,3,6)
> y
[1] 2 5 4 9 1 0 3 6
Wil je nu alleen weten wat het tweede element uit de vector y is, typ dan
> y[2]
> [1] 5
En wil je weten wat het derde en vijfde element zijn:
> y[c(3,5)]
> [1] 4 10
Of welk element de waarde 10 heeft:
> which(y ==10)
> [1] 5
En ten slotte welke elementen groter dan 7 of kleiner dan 3 zijn:
> y[y > 7 | y <3]
> [1] 2 9 10
Behalve optellen, aftrekken, vermenigvuldigen en delen (met de operatoren die in hoofdstuk 1 zijn genoemd) zoals dat normaal gesproken met vectoren gaat kunnen we ook veelgebruikte bewerkingen zoals het berekenen van het gemiddelde, het maximum of de lengte van een vector uitvoeren.
> mean(y)
[1] 5.571429
> max(y)
[1] 10
> n=length(y)
> n
[1] 7
Je kan ten alle tijden elementen aan een vector toevoegen, als volgt
> y[8] = 4
> y
[1] 2 5 4 9 10 3 6 4
> y[9:10] = c(7,7)
> length(y)
[1] 10
Tenslotte kan je een vector ook vullen met een ordinale of nominale variabele, oftewel variabelen in de ‘character’ mode, zoals de kleuren van bloemen. De waarden van een dergelijke niet-numerieke variabele moet dan tussen haakjes worden weergegeven:
> y=c("rood","geel","oranje","geel","geel","rood")
> y
[1] "rood" "geel" "oranje" "geel" "geel" "rood"
> table(y)
y
geel oranje rood
3 1 2
Andere modes zijn ook mogelijk in een vector, alleen niet verschillende modes tegelijkertijd.
Nog iets zeggen over het object “vector”?
Oefening
Maak een vector met de waarden 4 7 9 11 en 14. Probeer nu met R naast het gemiddelde van deze getallen ook de variantie en de standaarddeviatie te berekenen.
Einde
Antwoord:
Allereerst
> z <- c(4,7,9,11,14)
> z
[1] 4 7 9 11 14
> mean(z)
[1] 9
Na een beetje nadenken ben je misschien tot het volgende gekomen
> var(z)
[1] 14.5
> sd(z)
[1] 3.807887
Let wel dat het commando voor standaarddeviatie niet std maar sd is. Je had natuurlijk ook sqrt(var(z)) kunnen proberen. Dat had ook het juiste atwoord opgeleverd.)
genoemde functies (en enkele meer):
sum()
max()
min()
length(0
mean()
sd()