.Alias {base} | R Documentation |
.Alias
creates an alias to another (part of) an R
object which is more (memory-) efficient than usual assignment.
new <- .Alias(expr)
expr |
an R expression; typically a name. |
new |
new name by which expr can be accessed. |
an identical copy of expr
.
This has a dangerous semantic, and consequences can be
unexpected (it can be used to defeat the call-by-value illusion).
Know what you are doing before using .Alias
!
<-
for usual assignments.
mop <- options() mop$browser <- "a browser" # not set on all platforms Op <- .Alias(mop) ## A change to mop is reflected in Op and vice versa ## -- ONLY if no new slots are created ... mop$digits <- "Wow!" Op$browser <- "another one" mop$browser; Op$digits all(names(mop) == names(Op) & sapply(seq(mop), function(i) all(Op[[i]] == mop[[i]]))) ##> TRUE -- Op and mop ARE the same thing ! mop$newslot <- pi #--->> 'newslot' ==> (shallow) COPY of 'mop' Op$newslot # R: still the old one, i.e. NULL all(names(mop) == names(Op))# no longer TRUE