On Tue, 15 Dec 2009, Peng Yu wrote:

2009/12/15  <tlum...@u.washington.edu>:
On Wed, 16 Dec 2009, Peng Yu wrote:

On Tue, Dec 15, 2009 at 10:32 PM, hadley wickham <h.wick...@gmail.com>
wrote:

I don't understand what these addresses mean. Would you please help me
understand it?

Did you try reading the documentation?

    When an object is traced any copying of the object by the C
    function ‘duplicate’ or by arithmetic or mathematical operations
    produces a message to standard output.  The message consists of
    the string ‘tracemem’, the identifying strings for the object
    being copied and the new object being created, and a stack trace
    showing where the duplication occurred.  ‘retracemem()’ is used to
    indicate that a variable should be considered a copy of a previous
    variable (e.g. after subscripting).

"The message consists of the string ‘tracemem’, the identifying
strings for the object being copied and the new object being created,
and a stack trace showing where the duplication occurred."

I tried to read the document before I posted, but wasn't be able to
understand it, because there are multiple ways to parse it.

To make sure that I understand, I rewrite the above sentence to the
following. Is it correct?

"The message consists of the string ‘tracemem’, the string indicating
the object being copied,  the string indicating the new object being
created, and a stack trace showing where the duplication occurred."

I also didn't see a stack trace in my example. If I didn't see Martin
Morgan's post, I will still be confused.


The stack trace is there, it's just that it is empty because you aren't in a
function.

I thought that there should be only one coping. Why there are two lines?

tracemem[0x05cf2798 -> 0x05cf2750]:
tracemem[0x05cf2750 -> 0x05ed8ba0]:

I still don't understand what the numbers after 'tracemem[' are. Could
somebody please explain it?

They are the printed representations of the pointers to the objects on the R heap. In 
practice, they will be base-16 representations of  the memory addresses (though the C 
standard doesn't guarantee this).   The one before the -> is the address of the 
object being copied; the one after the -> is the address of the copy.   The point 
is to give names to each object, since they need not be R variables and may not have 
any other name.

In this trace you can see that the second copy is of the object created in the 
first copy.

           -thomas

Thomas Lumley                   Assoc. Professor, Biostatistics
tlum...@u.washington.edu        University of Washington, Seattle
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to