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? > x=1:3 > tracemem(x) [1] "<0x1056ef8>" > x[[4]]=8#I still don't understand what '0x9ac9f0' means here tracemem[0x1056ef8 -> 0x9ac9f0]: > tracemem(x)#The address of 'x' is 0x9aca38 but not '0x9ac9f0' [1] "<0x9aca38>" > There are two lines because there are two copies. One is the lazy copy > because the object is modified, the other is because it is converted from > integer to numeric. > > The whole point of tracemem() is to show copies that you didn't expect, so > being surprised by it is a good thing. > > -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.