[Rd] assigning objects from .C/.Call

Prof Brian D Ripley ripley@stats.ox.ac.uk
Tue, 24 Apr 2001 20:24:35 +0100 (BST)

On Tue, 24 Apr 2001, David James wrote:

> Hi,
> 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.)

I'm happy to do so, but can someone provide the more precise sentence,
please.  When exactly does R make a copy?

Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

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