[R] mutable objects

ripley@stats.ox.ac.uk ripley at stats.ox.ac.uk
Mon Jul 15 21:50:48 CEST 2002


BTW, this is used in the code for state-space models in (standard) package
ts.

On Mon, 15 Jul 2002, Duncan Temple Lang wrote:

> Vadim Ogranovich wrote:
> > Hi,
> >
> > I need "mutable" objects that I can safely modify in my C code. All call
> > interfaces, e.g. .C, .Call, etc., require you to not modify the "in" args.
>
> I took a quick look at the code for .Call() and it appears not to copy
> its arguments. As a result, however, you can use this to modify objects in
> place and they effects will persist. This is not "recommended" but
> does work for many purposes.
>
> A simple example where one can see  this effect is
> with the following C code.
>
> #include "Rinternals.h"
>
> SEXP
> foo(SEXP x, SEXP y)
> {
>   int n = LENGTH(x), i;
>
>   for(i = 0; i < n; i++) {
>           REAL(x)[i] += 1.0;
>           REAL(y)[i] *= REAL(y)[i];
>   }
>
>   return(x);
> }
>
> Calling this from R as
>
>  x <- as.numeric(1:10)
>  y <- as.numeric(1:10)
>  z <- .Call("foo", x, y)
>
> Then look at the values of x, y and z.
>
>
>
> The .Call() is currently incompatabile with S4 & S-Plus 6, I believe.
> We should probably correct this by adding a COPY argument and making
> duplication the default behavior.
>
>
> The OOP package provides both i) a way for creating mutable objects
> using environments and ii) a formal mechanism for specifying classes
> and inheritance from those classes. It sounds like you (currently)
> only need environments. The package is available from
>    http://www.omegahat.org/OOP
>
>  D.
>
>
>
> > The description of the OOP package in R-news from Sep 2001 alludes to a
> > possiblity of such objects, but the package itself is no longer on Omegahat
> > and I am not sure I need the full machinery.
> >
> > Thanks, Vadim
> >
> >
> > P.S. I wonder what is the relationship between the "methods" package and the
> > OOP package described in R-news from Sep 2001.
> >
> > --------------------------------------------------
> > DISCLAIMER
> > This e-mail, and any attachments thereto, is intended only for use by the
> > addressee(s) named herein and may contain legally privileged and/or
> > confidential information.  If you are not the intended recipient of this
> > e-mail, you are hereby notified that any dissemination, distribution or
> > copying of this e-mail, and any attachments thereto, is strictly prohibited.
> > If you have received this e-mail in error, please immediately notify me and
> > permanently delete the original and any copy of any e-mail and any printout
> > thereof.
> >
> > E-mail transmission cannot be guaranteed to be secure or error-free.  The
> > sender therefore does not accept liability for any errors or omissions in
> > the contents of this message which arise as a result of e-mail transmission.
> >
> > NOTICE regarding privacy and confidentiality
> >
> > Knight Trading Group may, at its discretion, monitor and review the content
> > of all e-mail communications.
> >
> > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> > r-help 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-help-request at stat.math.ethz.ch
> > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>
> --
> _______________________________________________________________
>
> Duncan Temple Lang                duncan at research.bell-labs.com
> Bell Labs, Lucent Technologies    office: (908)582-3217
> 700 Mountain Avenue, Room 2C-259  fax:    (908)582-3340
> Murray Hill, NJ  07974-2070
>          http://cm.bell-labs.com/stat/duncan
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help 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-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>

-- 
Brian D. Ripley,                  ripley at 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-help 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-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list