Hi everyone, I want to write a function that modify directly variables passed as parameters (the equivalent in C language of *ptr/&ptr) so that I don't have to return a list and to reaffect all my variables. Is it possible to do so in R? Thanks a lot. Laetitia Marisa.
R and pointer
5 messages · Laetitia Marisa, Jeff Gentry, Brian Ripley +2 more
I want to write a function that modify directly variables passed as parameters (the equivalent in C language of *ptr/&ptr) so that I don't have to return a list and to reaffect all my variables. Is it possible to do so in R? Thanks a lot.
You can use environments as they're passed by reference.
On Fri, 29 Aug 2003, Laetitia Marisa wrote:
I want to write a function that modify directly variables passed as parameters (the equivalent in C language of *ptr/&ptr) so that I don't have to return a list and to reaffect all my variables. Is it possible to do so in R?
Yes, with the .Call/.External interface (and there are examples in the ts package). To a limited extent it is possible with .C(DUP=FALSE), but you really don't want to go there. I would want a very good understanding of R's copying semantics before doing this (and those are liable to change, too).
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 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Three references that are of interest (the two first are related to the idea of using environments to do the job): [1] http://www.maths.lth.se/help/R/ImplementingReferences/ [2] http://www.maths.lth.se/help/R/R.oo/ [3] http://www.omegahat.org/OOP/ All of the above are written in the light object-oriented programming, but from [1] you quite easily get what is needed for just emulating "pointers". Be careful though as R is a functional language. Best wishes Henrik Bengtsson Lund University
-----Original Message----- From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Jeff Gentry Sent: den 29 augusti 2003 14:34 To: Laetitia Marisa Cc: r-help at stat.math.ethz.ch Subject: Re: [R] R and pointer
I want to write a function that modify directly variables passed as parameters (the equivalent in C language of *ptr/&ptr) so
that I don't
have to return a list and to reaffect all my variables. Is
it possible
to do so in R? Thanks a lot.
You can use environments as they're passed by reference.
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo> /r-help
Henrik Bengtsson wrote:
All of the above are written in the light object-oriented programming, but from [1] you quite easily get what is needed for just emulating "pointers". Be careful though as R is a functional language.
Cutting to what I think was the gist of the original poster's question, can I write a function, foo, that does this: > x <- 3 > foo(x) > x [1] 9 for any x, in any situation? I'm guessing its doable, but ugly... Baz