[R] Environmental problems.

Duncan Murdoch murdoch.duncan at gmail.com
Wed Feb 26 04:02:57 CET 2014


Rolf Turner wrote:

> Somehow I managed *not* to cc to R-help the message that I just sent to
> you.  I thought I'd clicked on "Reply All" but apparently not.  And in
> thrashing around trying to recover, I managed not to get a copy kept in
> my "Sent Mail"!!!
>
> Could I please prevail upon you to pass that message on to R-help?  I
> think that there are some ideas of general interest that others might
> like to see.

So here is his reply:


On 14-02-25 9:00 PM, Rolf Turner wrote:
> On 26/02/14 11:29, Duncan Murdoch wrote:
>
> <SNIP>
>> One problem in your scrF:  you have
>>
>> tdone <- tt
>>
>> rather than
>>
>> tdone <<- tt
>>
>> That creates a new local copy, it doesn't update the one in the parent
>> environment.  That doesn't explain a "not found" error, but it would
>> cause problems...
>
> I have never understood the use of "<<-"; missed that notation in your
> example.  Thanks for pointing it out.
>
>>
>> The thing that causes the "not found" error is in xsolve.disc.R, where
>> you replace the environment of scrF with new.env().  That wipes out the
>> tiny one that local() created, and replaces it with an empty one whose
>> parent is the evaluation frame of xsolve.disc.
>
> That was a bit of a "duh", wasn't it?  The reason for the new.env()
> stuff is my OCD tendency.  I am always desperate to get rid of clutter
> and the default environment is filled with stuff that has no reason to
> be there IMHO.  I guess the proper procedure would be to wrap each of
> the functions upon which I inflict "new.env()" in local() to start with,
> instead of mucking about with new.env() in that way.
>
>> Generally speaking it's a bad idea to replace the environment of
>> functions, it's hard to get it right.  It's better to create the right
>> one in the first place.
>
> By using local()?
>
> Anyhow, having made the required changes, I now get the local() idea to
> work.
>
> Thank you!
>
> I would still like to know why I got the bizarre phenomenon that I
> initially got.  It makes no sense.  But that's just an academic question
> now, so I won't waste any more of your time on it.
>
> Thanks again.
>
> cheers,
>
> Rolf
>




More information about the R-help mailing list