R is een taal

Om te begrijpen hoe R werkt moet je R leren ontleden. De operators zijn de grammatica van R. De datatypes zijn verschillende vormen van zelfstandige naamvallen in R. De functies zijn de werkwoorden van R.


Operators

Operators zijn de grammatica van R. Operators zijn ‘tekens’ die R volgens een stricte logica interpreteert. Onderstaande lijst zijn de meest gebruikte operators en zijn essentieel om R te begrijpen en mee te kunnen werken. Per operator wordt er een kort voorbeeld gegeven. Lijst van alle operators.

Wiskundige Operators

Teken Betekenis Input Output
+ Plus 5 + 5 [1] 10
- Minus 8 - 3 [1] 5
* Keer 8 * 3 [1] 21
/ Delen door 28 / 7 [1] 4
^ exponentieel 2 ^ 3 [1] 8

Voorbeeld in R:

1+5
## [1] 6
9/3
## [1] 3
4^2
## [1] 16

Logische Operators

Logische operators worden gebruikt om te testen of een bepaald statement waar is. De output is dichotoom, namelijk WAAR of ONWAAR. R gebruikt hiervoor: TRUE of FALSE. Lees meer over “Logical Operators”.

Teken Betekenis Input Output
== Gelijk aan 8 == 5 [1] FALSE
!= Niet gelijk aan 5 != 3 [1] TRUE
> Groter dan 8 > 3 [1] TRUE
>= Gelijk of meer dan 8 >= 3 [1] FALSE
< Kleiner dan 5 < 8 [1] TRUE
<= Kleiner of gelijk aan 2 <= 2 [1] TRUE
| OF (1==1) | (2==3) [1] TRUE
& EN (1==1) & (2==3) [1] FALSE
! NIET !(1==1) [1] FALSE

Voorbeeld in R:

1 == 5
## [1] FALSE
5 > 3
## [1] TRUE
(1==1) & (2==3)
## [1] FALSE

Assignment Operators

Deze operators worden gebruikt om objecten te maken. Er zijn twee type assignment operators. Is er een verschil tussen de twee? JA en JA, maar de meningen zijn verdeeld. Over het algemeen maakt het niet uit. Het is aan te bevelen om ongeacht de keuze die je maakt wel consistent te zijn. Zie ook Google R codeerstijl.

Teken Betekenis Input Output
<- Assign x <- 5 [1] 5
= Assign X = 8 [1] 8

LET OP: R is HoOfDlEtTeR GeVoElIg. X en x zijn twee verschillende objecten.


Objects

Alle data in R is wordt opgeslagen als een object. Een object is een container van data met een label. Objecten hebben een class en een type. Class is de data vanuit het oogpunt van de gebruiker en het type is de data vanuit het oogpunt van R. Om erachter te komen hoe R de data beschouwt zijn de functies class() en typeof() beschikbaar. Vanuit het oogpunt van statistische analyse is de class functie meestal genoeg. Bij twijfel kun je typeof() gebruiken.

Er zijn verschillende typen basic classes. Zie R-Tutor voor een korte uitleg over alle classes. De 5 belangrijkste classes zijn:

  • Numeric
  • Integer
  • Logical
  • Character
  • Special Values

Numeric

Getallen worden in R standaard opgeslagen als een numeriek object. met is.numeric() kun je controleren of x een getal is (ongeacht de class). Gebruik class() om op te zoeken hoe het object is opgeslagen.

x  <- 5               # defineer x
class(x)                # zoek de class van x op
## [1] "numeric"
is.numeric(x)     # is x een numeriek getal?
## [1] TRUE
x + 5             # tel 5 bij 5 op.
## [1] 10
x == 10           # is x gelijk aan 10?
## [1] FALSE
x
## [1] 5
x <- x + 5        # maak een nieuw object x gedefineerd als 'x + 5'
x
## [1] 10

Integer

De oplettende lezer was in bovenstaande voorbeeld al opgevallen dat 5 een ‘rond’ getal is en dat het dus ook een integer waarde is. R slaat standaard getallen op als numeriek object. Als je een getal wilt opslaan als een integer kun je gebruik maken van de functie as.integer(). Om erachter te komen of een object integer is kun je gebruik maken van de functie is.integer() of class().

x  <- 3.14                       # maak een object x
class(x)                           # wat is de class van x?
## [1] "numeric"
is.integer(x)                      # is x een integer?
## [1] FALSE
x  <- as.integer(3.14)       # forceer x als integer getal van 3.14
x                                # x is nu opgeslagen als integer getal.
## [1] 3
# LET OP: as.integer() is niet bedoeld als afrondingsfunctie. Gebruik hiervoor round()
class(x)                           # zoek de nieuwe class van x op
## [1] "integer"
# as.integer werkt alleen op getallen
as.integer("Jan Maat")       # R forceert "Jan Maat" nu als onmogelijk getal: NA (not available)
## [1] NA
# R beschouwt TRUE en FALSE tevens als 1 en 0. 
# Zo kan je statistische testen toepassen op logical objects.
as.integer(TRUE)               # De numerieke waarde van TRUE 
## [1] 1
as.integer(FALSE)              # De numerieke waarde van FALSE 
## [1] 0

Logical

Een logical object wordt gebruikt ter uitdrukking van dichotome uitkomsten, zoals WAAR of NIET WAAR variabelen. In onderstaand voorbeeld wordt ; gebruikt om een nieuwe regel te beginnen.

x <- 1; y <- 2   # defineer x en y als numerieke objecten
z <- x > y       # defineer een nieuw object: is x groter dan y?
z                # wat is z? 
## [1] FALSE
class(z)         # wat is de class van z?
## [1] "logical"
is.logical(z)    # is z logical?
## [1] TRUE

Met Logical operators zijn complexe combinaties te maken. Hiervoor worden de voornamelijk de operators “&” (En), “|” (Of), and “!” (negatief) gebruikt. Lees meer over de logical operators.

x = TRUE; y = FALSE 
x & y          # Wat is de combinatie van x en y? 
## [1] FALSE
x | y          # is x of y TRUE?
## [1] TRUE
!x             # is x NIET TRUE?   (is x FALSE?)
## [1] FALSE
!y             # is y NIET TRUE?   (is y FALSE?)
## [1] TRUE

And or Not

Character

Characters is de class voor vrije tekst. Gebruik class() en is.character() om erachter te komen of een object een character is. Gebruik as.character() om een object te forceren als vrije tekst. Dit werkt ook op numerieke objecten. nchar() geeft de lengte van de vrije tekst in tekens.

x = 3.14
class(x)
## [1] "numeric"
is.integer(x)
## [1] FALSE
x = as.character(x)          # forceer x als vrije tekst
class(x) 
## [1] "character"
is.integer(x)
## [1] FALSE
x = "vrije tekst"            # defineer x als "vrije tekst"
nchar(x)                     # hoeveel tekens bevat x?
## [1] 11
x = "3.14"                   # gebruik de "double quotations" om getallen te defineren als tekst.
class(x)
## [1] "character"

Special characters

Special characters zijn ‘values’ die buiten het normale basis datatype vallen. Ze representeren voornamelijk een vorm van missing values. Er zijn verschillende soorten special characters: NA, NULL, NaN en Inf. Hieronder volgen een aantal korte voorbeelden.

  • NA : Not Available (Niet beschikbaar)
  • NULL : Empty Value (Lege waarde)
  • NaN : Not a Number (geen nummer)
  • Inf : infinity (oneindig)
# Voorbeeld met is.na(), geeft een TRUE/FALSE output
is.na(y) # TRUE als x is missing
## [1] FALSE
y <- c(1,2,3,NA)
is.na(y)
## [1] FALSE FALSE FALSE  TRUE

Lees meer over missing values. Gebruik de functie’s is.na() en is.nan() om erachter te komen of een object NA’s/NaN’s bevat. Meer informatie over omgaan met NA’s komt aan bod bij de Data cleanup.


Creative Commons-Licentie Dit werk valt onder een Creative Commons Naamsvermelding - Gelijk Delen 3.0 Internationaal-licentie .