>> 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

Reply via email to