[Rd] buglet in fix() [was "function via source or fix"] (PR#602)

Prof Brian D Ripley ripley@stats.ox.ac.uk
Wed, 12 Jul 2000 09:05:09 +0100 (BST)


On Wed, 12 Jul 2000 maechler@stat.math.ethz.ch wrote:

> >>>>> "Erin" == Erin Hodgess <hodgess@uhddx01.dt.uh.edu> writes:
> 
>     Erin> Suppose I create a function, x.e, via the fix command:
> 
> (ESS users ESS don't ever do this, but still ...)
> 
>     >> x.e <- fix(x.e)
> 
>     Erin> When I type in x.e, the function code appears, along
>     Erin> with the name/number of the environment.
> 
> Ok, in the above it was important that there's no *existing* object x.e 
> beforehand.
> 
> Note that the idea about  fix() is that you only have to write
> 
>      fix(x.e)
> 
> But your problem remains :
> 
>     > fix(newerf)
>     Waiting for Emacs...Done	--- I have  options(editor = "emacsclient")
>     > newerf
>     function ()
>     {
>     ## newer
>     }
>     <environment: 0x40862004>
>     > environment(newerf)
>     <environment: 0x40862004>
>     > ls(env=environment(newerf))
>     [1] "subx" "x"   
>     >
> 
> I.e. it got the environment of the function fix -- I think this is clearly
> a bug  CC'ed to  R-bugs

And the fix is easy: just add

environment(x) <- .GlobalEnv

in that branch of the if.  Now committed to the R-patched branch.

-- 
Brian D. Ripley,                  ripley@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-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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._