R passes arguments by value
The title gives it away already: R passes arguments by value. What does this mean? Simply put, it means that an R function cannot change the variable that you input to that function. Let's look at a simple example (try it in the console):
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
Inside the triple()
function, the argument x
gets overwritten with its value times three. Afterwards this new x
is returned. If you call this function with a variable a
set equal to 5, you obtain 15. But did the value of a
change? If R were to pass a
to triple()
by reference, the override of the x
inside the function would ripple through to the variable a
, outside the function. However, R passes by value, so the R objects you pass to a function can never change unless you do an explicit assignment. a
remains equal to 5, even after calling triple(a)
.
Can you tell which one of the following statements is false about the following piece of code?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
This exercise is part of the course
Intermediate R
Hands-on interactive exercise
Turn theory into action with one of our interactive exercises
