Are you using a GUI like RStudio to run R? If it, it may be looking at the values of things after each command to update its workspace window, and the looking will trigger the delayed assignments.
(I cannot reproduce what you show using command line R on Linux.) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com From: Gang Peng [mailto:michael.gang.p...@gmail.com] Sent: Friday, August 16, 2013 1:55 PM To: William Dunlap Cc: r-help@r-project.org Subject: Re: [R] A question about using delayedAssign Hi Bill, Thanks. According to the output, the assignment was triggered immediately after 'delayedAssign'. So strange. > msg <- "old" > delayedAssign("x", { cat("Assigning 'msg' to 'x' now\n") ; msg }) > msg <- "new!" > x Assigning 'msg' to 'x' now [1] "new!" > msg <- "old" > delayedAssign("x", { cat("Assigning 'msg' to 'x' now\n") ; msg }) Assigning 'msg' to 'x' now > msg <- "new!" > x [1] "old" Best, Gang 2013/8/16 William Dunlap <wdun...@tibco.com<mailto:wdun...@tibco.com>> Change delayedAssign("x", msg) to delayedAssign("x", { cat("Assigning 'msg' to 'x' now\n") ; msg }) and you will see the message when the delayed assignment is triggered. You could add print(sys.calls()) to that to see the call stack if it isn't obvious. > msg <- "old" > delayedAssign("x", { cat("Assigning 'msg' to 'x' now\n") ; print(sys.calls()) > ; msg }) > f <- function(p) paste(x, p) > f("qwerty") Assigning 'msg' to 'x' now [[1]] f("qwerty") [[2]] paste(x, p) [[3]] print(sys.calls()) [1] "old qwerty" > x [1] "old" Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com<http://tibco.com> > -----Original Message----- > From: r-help-boun...@r-project.org<mailto:r-help-boun...@r-project.org> > [mailto:r-help-boun...@r-project.org<mailto:r-help-boun...@r-project.org>] On > Behalf > Of Gang Peng > Sent: Wednesday, August 14, 2013 6:12 PM > To: r-help@r-project.org<mailto:r-help@r-project.org> > Subject: [R] A question about using delayedAssign > > I run the examples in delayedAssign: > > msg <- "old" > delayedAssign("x", msg) > msg <- "new!" > x > > If I run these four commands together, x is "new". If I run the first two > commands first and then run the last two commands, x is "old". > > I just cannot figure out why. > > Thanks. > Gang > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org<mailto: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. [[alternative HTML version deleted]] ______________________________________________ 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.