R geeft argumenten door op basis van waarde
De titel verklapt het al: R geeft argumenten door op basis van waarde. Wat betekent dat? Simpel gezegd: een R-functie kan de variabele die je aan die functie doorgeeft niet wijzigen. Laten we een eenvoudig voorbeeld bekijken (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 by reference aan triple() zou doorgeven, zou het overschrijven van x binnen de functie doorwerken naar de variabele a buiten de functie. R geeft echter op basis van waarde door, dus de R-objecten die je aan een functie doorgeeft, kunnen nooit veranderen tenzij je een expliciete toekenning doet. a blijft gelijk aan 5, ook nadat je triple(a) hebt aangeroepen.
Kun je aangeven welke van de volgende beweringen 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
Interactieve oefening met praktijkervaring
Zet theorie om in actie met een van onze interactieve oefeningen
Begin oefening