From p.dalgaard@biostat.ku.dk  Tue Apr 24 23:50:18 2001
From: p.dalgaard@biostat.ku.dk (Peter Dalgaard BSA)
Date: 25 Apr 2001 00:50:18 +0200
Subject: [Rd] assigning objects from .C/.Call
In-Reply-To: Prof Brian D Ripley's message of "Tue, 24 Apr 2001 20:24:35 +0100 (BST)"
References: <Pine.GSO.4.31.0104242021450.16295-100000@auk.stats>
Message-ID: <x2ae55c3px.fsf@blueberry.kubism.ku.dk>

Prof Brian D Ripley <ripley@stats.ox.ac.uk> writes:

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

At C level, you'd need to duplicate(). In an assign() call,
duplication takes place if the object is NAMED except if .Alias is
used. ...I think.
-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] assigning objects from .C/.Call
Peter Dalgaard BSA