[Rd] Understanding tracemem
hadley at rice.edu
Thu Jul 12 18:15:06 CEST 2012
I've been trying to get a better handle on what manipulations lead R
to duplicate a vector, creating small experiments and using tracemem
to observe what happens (all in 2.15.1). That's lead me to a few
questions, illustrated using the snippet below.
x <- 1:10
#  "<0x1058f8238>"
x <- 5
# tracemem[0x1058f8238 -> 0x105994ab0]:
x <- 11
Why does x <- 5 create a copy, when x (which should be
extending a vector does not) ? I can understand that maybe x <- 5
hasn't yet been optimised to not make a copy, but if that's the case
then why doesn't x <- 11 make one? I thought it might be because
somehow tracemem loses track, but adding an additional tracemem(x)
after x <- 5 doesn't change the output.
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
More information about the R-devel