>> If I run it from the command line, I get: >> >> Global >> @1050bb840 13 INTSXP g0c2 [MARK,NAM(1)] (len=3, tl=0) 1,2,3 >> @1050bb840 13 INTSXP g0c2 [MARK,NAM(1)] (len=3, tl=0) 1,1,3 >> In function >> @1050bb190 13 INTSXP g0c2 [NAM(1)] (len=3, tl=0) 1,2,3 >> @1050bb190 13 INTSXP g0c2 [NAM(1)] (len=3, tl=0) 1,1,3 >> >> i.e. both modifications occur in place. >> >> If I put it in a file and source() it, I get: >> >> Global >> @1050bb318 13 INTSXP g0c2 [NAM(2)] (len=3, tl=0) 1,2,3 >> @1050bb698 13 INTSXP g0c2 [NAM(1)] (len=3, tl=0) 1,1,3 >> In function >> @1050b8958 13 INTSXP g0c2 [NAM(1)] (len=3, tl=0) 1,2,3 >> @1050b8958 13 INTSXP g0c2 [NAM(1)] (len=3, tl=0) 1,1,3 >> >> i.e. in the global environment a copy is created. >> >> Why is there a difference? >> > > Did you look at source()? ;) > It has to do with all the additional processing there which assigns the > result of every line locally thus producing extra copies. If you just eval > it, you'll get the same behavior as in the console:
Oh, of course. Thanks! Hadley -- Chief Scientist, RStudio http://had.co.nz/ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel