[Rd] assigning objects from .C/.Call

David James David James <dj@research.bell-labs.com>
Tue, 24 Apr 2001 14:16:21 -0400 (EDT)


In section 4.6.7 of "Writing R Extensions" (Version 1.2.1, 2001-01-15) 
the C function defineVar() is described as  "... the equivalent 
of assign(symbol, value, envir = rho, inherits = FALSE) ..."

I interpreted the above (wrongly) as meaning that defineVar() makes 
a copy of its "value" argument into the object whose name is specified 
in "symbol" in the "rho" environment (that's how assign() works at the 
R/S level).  However, this is not exactly how defineVar() appears to work.
In particular, it appears to assign the object in the environment "rho",
but further changes in the C code to the object are reflected in the 
"assigned" object in rho (i.e., no actual copy of the object is made).

I can see that the implemented behavior is quite useful, but it's not 
exactly equivalent to assign().  Perhaps the documentation should be more 
explicit and add a sentence to warn users that the data part of the
object is shared? (The sentence may need to be more precise, though.)

> version

platform i686-pc-linux-gnu
arch     i686             
os       linux-gnu        
system   i686, linux-gnu  
major    1                
minor    2.1              
year     2001             
month    01               
day      15               
language R                


David A. James
Statistics Research, Room 2C-253            Phone:  (908) 582-3082       
Bell Labs, Lucent Technologies              Fax:    (908) 582-3340
Murray Hill, NJ 09794-0636

r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch