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
Praktische interactieve oefening
Zet theorie om in actie met een van onze interactieve oefeningen.
Begin met trainen