Aan de slagGa gratis aan de slag

R geeft argumenten door op basis van waarde

De titel verklapt het al: R geeft argumenten door op basis van waarde (by value). Wat betekent dat? Simpel gezegd: een R-functie kan de variabele die je aan die functie meegeeft niet veranderen. Kijk naar een eenvoudig voorbeeld (probeer het in de console):

triple <- function(x) {
  x <- 3*x
  x
}
a <- 5
triple(a)
a

Binnen de functie triple() wordt het argument x overschreven met zijn waarde maal drie. Daarna wordt deze nieuwe x geretourneerd. Als je deze functie aanroept met een variabele a die gelijk is aan 5, krijg je 15. Maar is de waarde van a veranderd? Als R a zou doorgeven aan triple() by reference, dan zou het overschrijven van x binnen de functie doorwerken naar de variabele a buiten de functie. R geeft echter by value door, dus de R-objecten die je aan een functie meegeeft kunnen nooit veranderen, tenzij je expliciet een toekenning doet. a blijft gelijk aan 5, ook na het aanroepen van triple(a).

Kun je aangeven welke van de volgende uitspraken onwaar is over de onderstaande code?

increment <- function(x, inc = 1) {
  x <- x + inc
  x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)

Deze oefening maakt deel uit van de cursus

R voor gevorderden

Cursus bekijken

Praktische interactieve oefening

Zet theorie om in actie met een van onze interactieve oefeningen.

Begin met trainen