Understanding lexical scoping
In the previous section, we introduced the copy-on-modify mechanism. The examples demonstrated two cases in which this mechanism happens. When an object has multiple names or is passed as an argument to a function, modifying it will cause the object to be copied, and it is the copied version that is actually modified.
To modify an object outside a function, we introduced the use of <<-
, which finds the variable outside the function first and modifies that object instead of copying one locally. This leads to an important idea that a function has inside and outside. Inside a function, we can somehow refer to variables and functions outside.
For example, the following function uses two outside variables:
start_num <- 1 end_num <- 10 fun1 <- function(x) { c(start_num, x, end_num) }
We first create two variables and define a function called fun1
. The function simply puts together start_num
, argument x
, and end_num
into a new...