[R] Change value of a slot of an S4 object within a method.
Steve Lianoglou
mailinglist.honeypot at gmail.com
Wed Aug 25 21:36:53 CEST 2010
Howdy,
On Wed, Aug 25, 2010 at 1:21 PM, Joris Meys <jorismeys at gmail.com> wrote:
> Hi Steve,
>
> thanks for the tip. I'll definitely take a closer look at your
> solution for implementation for future use. But right now I don't
> have the time to start rewriting my class definitions.
>
> Luckily, I found where exactly things were going wrong. After reading
> into the documentation about the evaluation in R, I figured out I have
> to specify the environment where substitute should look explicitly as
> parent.frame(1). I still don't understand completely why exactly, but
> it does the job.
>
> Thus :
> eval(eval(substitute(expression(object at extra[[name]] <<- value))))
>
> should become :
>
> eval(
> eval(
> substitute(
> expression(object at extra[[name]] <<- value)
> ,env=parent.frame(1) )
> )
> )
My eyes start to gloss over on their first encounter of `substitute`
... add enough `eval`s and (even) an `expression` (!) to that, and
you'll probably see me running for the hills ... but hey, if it makes
sense to you, more power to you ;-)
Glad you found a fix that works,
-steve
--
Steve Lianoglou
Graduate Student: Computational Systems Biology
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact
More information about the R-help
mailing list