Les 1. Het allereerste begin
1.1 objecten
Als je voor de eerste keer R opent:
In Rgui verschijnt een window met wat tekst en dan de prompt ‘>’. Dit betekent dat R klaar is om commando’s te ontvangen.
Je kan nu meteen een commando typen. Maar het lijkt me handig eerst een paar zinnen te zeggen over hoe R werkt voor we dit doen.
R is een objectgeoriënteerde taal (Eng: object-oriented language). Dit betekent dat alles wat je gebruikt aan data, variabelen of functies in het actieve geheugen van R als objecten wordt opgeslagen. Zodat je ze later in dezelfde sessie (dus voor je R hebt afgesloten) allemaal weer kunt gebruiken. Je kan gedurende een sessie acties uitvoeren op objecten met behulp van operatoren (zoals =,-,* en /) en functies (zoals mean, max, min and sum). Functies zijn zelf ook weer objecten. Sommige objecten, zoals vele functies, zitten al in R opgeslagen, andere kun je aanmaken door een nog niet gebruikte naam op te geven. Een objectnaam begint altijd met een letter (klein of groot), daarna mag je naast letters ook cijfers en punten gebruiken. Een hoofdletter wordt daarbij als iets anders gezien dan een kleine letter.
Een object wordt aangemaakt als je het een waarde, betekenis of functie geeft. Stel je wilt een contante 'k' aanmaken met de waarde 22. Dit doe je door het volgende achter de (hier met rood aangeduide) prompt (>) te typen:
> k <- 22
Na op enter/return gedrukt te hebben is het object ‘k’ aangemaakt, en verschijnt er weer een nieuwe prompt om aan te geven dat R klaar is voor het volgende commando. Typ nu eens
> k
Na op enter/return gedrukt te hebben, verschijnt de inhoud van ‘k’ als volgt:
[1] 22
De [1] betekent dat het om de eerste rij (sterker nog het eerste element) van object ‘k’ gaat. Je had overigens ‘k’ ook op de volgende manier kunnen aanmaken.
> 22 -> k
Of
> k = 22
In veel gevallen (maar niet alle) kan dit ‘=’ teken gebruikt worden. Wat je ook gebruikt, als ‘k’ al bestond wordt de vorige waarde overschreven. Dus als we nu typen (met de gebruikelijke druk op enter/return achter ieder commando):
> k <- 18
> k
Dan verschijnt er achter de laatste ‘enter’:
[1] 18
Veel objecten, met name functies, bestaan al in R. De functies zijn opgeslagen in de ‘library’ directory van R. Een overzicht van alle basisfuncties vind je daar. Bijvoorbeeld in de directory 'html' van de directory 'base' vind je de html file 'rbind.html'. Door hier op te drukken krijg je een omschrijving van wat deze functie doet: rij-gewijs vectoren of matrices onder elkaar zetten.
In 'R' zelf kan je ook informatie over functies krijgen door op
> ?rbind
of
> help(rbind)
of zelfs
> help("rbind")
Dit laatste is vooral handig met informatie over bv het vermenigvuldigingsteken *. Dit doe je dan dus met
> help("*")
Een voorbeeld van een andere bestaande functie is rnorm. Als je rnorm(1) gebruikt in R wordt aselect een getal getrokken uit een standaardnormale verdeling (= normale verdeling met gemiddelde = 0 en variantie = 1). Onthoud dat als je een functie in R gebruikt deze altijd gevolgd worden door ( ). Soms staat er iets tussen deze haakjes, maar soms ook niet.
Later zullen we zelf ook functies aanmaken. Dan zal ik daarvoor Nederlandse namen gebruik als onderscheid met bestaande functies die Engelse namen hebben.
Oefening
Open R (als je dat nog niet gedaan hebt) en creëer de objecten A en B met waarde 10, en 5 respectievelijk. Creëer dan een object C die gelijk is aan 2 plus een random standaardnormaal verdeeld getal.
Einde
Bovenstaande opdracht kun je als volgt uitvoeren:
> A <- 10; B <- 5
> C <- 2 + rnorm(1)
Nu kun je een lijst maken van alle aanwezige objecten door
> ls( )
Na drukken op enter levert dit
[1] “A” “B” “C” “k”
En, na
> C
Krijg je de waarde van "C", bijvoorbeeld:
[1] 0,2289476
Zoals je hierboven zag kunnen getallen op de gebruikelijke manier worden opgeteld met een +. Voor aftrekken gebruiken we -. Voor vermenigvuldigen en delen kun je respectievelijk * en / gebruiken, en ^ voor machten. Voor het volledige lijstje operatoren, zie de samenvatting in Les 2.3. Voor het gebruik van deze operatoren is het overigens niet nodig objecten te definiëren. Zie bijvoorbeeld het volgende:
> 5 + 4
[1] 9
> 12/4
[1] 3
> 2^3
[1] 8