Auxiliary functions to pass arguments to function by reference
These two functions aimed to simplify build functions with side-effects (e. g. for modifying variables in place). Of cause it is not the R way of doing things but sometimes it can save several keystrokes.
ref(x) ref(x) <- value
x |
Reference to variable, it is formula, ~var_name. |
value |
Value that should be assigned to modified variable. |
To create reference to variable one can use formula: b = ~a
.
b
is reference to a
. So ref(b)
returns value of
a
and ref(b) = new_val
will modify a
. If argument
x
of these functions is not formula then these functions have no
effect e. g. ref(a)
is identical to a
and after ref(a)
= value
a
is identical to value
. It is not possible to use
function as argument x
in assignment form. For example,
ref(some_function(x)) = some_value
will rise error. Use y =
some_function(x); ref(y) = some_value
instead.
ref
returns value of referenced variable.
ref<-
modifies referenced variable.
# Simple example a = 1:3 b = ~a # b is reference to 'a' identical(ref(b),a) # TRUE ref(b)[2] = 4 # here we modify 'a' identical(a, c(1,4,3)) # TRUE # usage inside function # top 10 rows head10 = function(x){ ds = head(ref(x), 10) ref(x) = ds invisible(ds) # for usage without references } data(iris) ref_to_iris = ~iris head10(ref_to_iris) # side-effect nrow(iris) # 10 # argument is not formula - no side-effect data(mtcars) mtcars10 = head10(mtcars) nrow(mtcars10) # 10 nrow(mtcars) # 32
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.