Inleiding Programmeren + R

Variabelen

» Start

Variabelen


1. Waarde, Type, en Vorm


1.1 Waarde 


We kunnen R gewoon als Rekenmachine gebruiken. Met behulp van een rekenmachine kunnen we waarden bewerken, zoals machtsverheffen (^), vermenigvuldigen (*), delen (/), optellen (+), en aftrekken (-), en dat gaat met R op vergelijkbare manier:

> 2+4 

[1] 6 

> 4-3 

[1] 1 

> 3*5 

[1] 15 

> 4/2

[1] 2

> 2^3 

[1] 8 

De symbolen die de bewerking voorstellen noemen we ook wel operatoren. De waarden kunnen we toekennen aan variabelen. Een waarde toekennen aan een variabele doen we met behulp van het pijltje <-  . Een variabele krijgt daarbij tegelijk een naam. De naam bestaat in de regel uit letters, zoals bijvoorbeeld armlengte. Ook mogen getallen en - of _ worden gebruikt in de naam, zoals bijvoorbeeld lengte-poot-2, maar de naam mag niet met een getal beginnen. Er mogen geen spaties in de naam van een variabele voorkomen.

# met dit teken # maak je in R kommentaar regels...

> a <- 2    # waarde 2 wordt toegekend aan variabele met naam a

> b <- 4    # waarde 4 wordt toegekend aan variabele met naam b

> armlengte <- 34 


Als je vervolgens de inhoud van de variabele wil zien moet je de naam op de commandoregel van R intypen en RETURN geven:

    

    >varia <- 34

    >varia

    [1] 34

    

Een beetje vreemd wellicht, dat we de naam van de variabele moeten intypen om de inhoud te zien te krijgen, want van een gewone expressie zoals

    

    > 4 * 3

    [1] 12

    

krijgen we wel direct het resultaat onder ogen. Dat komt omdat R eigenlijk impliciet een print-opdracht voor zo'n expressie zet. Dus eigenlijk doet R dit:

    

    > print(4 * 3)

    [1] 12

    

Om dezelfde reden krijgen we als we de toekenning van waarden aan een variabele tussen haakjes zouden zetten, wel direct de inhoud te zien:

    

    > (varia <- 34)

    [1] 34

    

en dat komt weer omdat R in zo'n expressie er stiekem print voorzet:

    

    > print (varia <- 34)

    [1] 34

    

Je hebt de print opdracht dus nodig in alle gevallen dat je expliciet resultaten op je scherm afgedrukt wilt zien! Alleen bij gebruik van de commandoregel neemt R impliciet die taak van je over.


Nadat een variabele d.m.v. een toekenning van 1 of meer waarden is voorzien kunnen we de variabelen gebruiken in de bewerkingen.

    

    > a+b 

    [1] 6

    

    > a-b 

    [1] -2

    

    > a/b 

    [1] 0.5

    

    > a*b 

    [1] 8

    

    > a^b 

    [1] 16

    

In een uitdrukking, ook wel expressie genoemd, kunnen meerdere bewerkingen voorkomen die stuk voor stuk moeten worden uitgevoerd. Daarbij gelden de bekende voorrangsregels: haakjes gaan boven alles, vervolgens komt machtsverheffen, dan vermenigvuldigen samen met delen, en ten slotte optellen samen met aftrekken:

    

    > z <- a + 3 * b - (4 / a) ^ b 

    [1] -2

    

    > 3*4^2

    [1] 48

    

    > 4^2*3

    [1] 48

    

    > (3*4)^2

    [1] 144

    

    > 4^(2*3)

    [1] 4096

    

    > 3*4/2

    [1] 6

    

    > 4/2*3

    [1] 6

    

    > 4/(2*3)

    [1] 0.6666667

    

1.2 Type


We onderscheiden twee typen (R noemt dit mode) van variabelen: Getallen (en daar vallen de zg Boolese variabelen TRUE en FALSE ook onder) en Karakters. 

> 3     # dit is een getal

> 'a'   # maar dit is een karakter a: het staat tussen aanhalingstekens

> '3'   # dit is ook een karakter, nl het symbool voor het getal 3

> a     # dit is de naam van een variabele waar we al eerder een 

# waarde aan hebben toegekend.

De twee typen van variabelen, getal en karakter, zijn incompatibel. Dat wil zeggen dat ze onderling niet te bewerken zijn. Je kunt niet een getal bij een karakter optellen, of een karakter door een getal delen. Met andere woorden: bij elk type hoort zijn eigen soort van bewerkingen [methoden]. Bij getallen horen alle rekenkundige bewerkingen. Maar met karakters kan R niet zoveel. (Je kunt er woorden en zinnen mee vormen, maar dat gaat niet door losse karakters met behulp van bijv de + of een ',' aan elkaar te plakken, maar gewoon door de worden en/of zinnen in hun geheel in te typen tussen aanhalingstekens).

Dus dit werkt:   

> TRUE * 3

[1]3

Maar dit niet:

> tekst <- 'goede morgen'

> 23 * tekst

Error in 23 * tekst: non-numeric argument to binary operator

> woord <- 'hallo'

> woord * tekst

Error in woord * tekst : non-numeric argument to binary operator

> '7' + '23'

???

Met behulp van de functie ls kunnen we aan R vragen welke variabelen in het geheugen aanwezig zijn:

> ls()

[1] "a"     "b"     "tekst" "woord"

Met de functie mode kunnen we vragen tot welk type een variabele behoort:

> mode(a)

"numeric"

> mode(woord)

"character"

En met de functie str (= structure) krijgen we niet alleen het type als antwoord, maar ook de waarde:

> str(a)

num 2

We kunnen de functies ls en str ook bundelen tot ls.str. Dat werkt zo:

> ls.str()

a :  num 2

b :  num 4

tekst :  chr "goede morgen"

woord :  chr "hallo"

1.3 Vorm


Getallen kunnen op zich zelf staand voorkomen, zoals het getal 3. We spreken dan van een scalair. Getallen kunnen ook gegroepeerd voorkomen. Dat kan op twee manieren: als Vector, of als een Matrix. En eigenlijk kent R geen scalairen. Ook 1 enkel getal wordt door R al beschouwd als een vector, en wel een vector met een lengte die gelijk is aan 1. Alle gegevensstructuren in R bezitten de eigenschap lengte. Die eigenschap geeft weer uit hoeveel objecten een variabele bestaat.

> length(a)

[1] 1

> length(woord)

[1] 1

> length(tekst)

[1] 1

Daarnaast kent R nog twee vormen van zg samengestelde gegevensverzamelingen, de Lijst en het Dataframe. Een matrix en een dataframe hebben naast lengte bovendien de eigenschap dimensie.