On 5/8/2006 9:03 PM, François Pinard wrote: > Hi, people. This is about R 2.3.0 under Linux. > > It seems that edit() may change a function environment. Here is > a transcript, more comments follow: > > ======================================================================> >> fix(f) > >> f > function () > { > } > >> fix(f) > Erreur dans edit(name, file, title, editor) : > une erreur s'est produite à la ligne 3 > utilisez une commande du genre > x <- edit() > pour corriger > >> f <- edit() > >> f > function () > { > } > <environment: base> > ======================================================================< > > The initial ``fix(f)`` called an editor, which I exited right away. For > the second ``fix(f)``, I used the editor for adding a slash between > braces, and exited. The French comment produced by R speaks about an > error at line 3 and suggests using something like ``x <- edit()`` to > make a correction. On the third call to the editor, I remove the slash > and exit. Now, the environment of the function became "base". > > This has unfortunate effects when editing a more substantial function, > because for example, "stats" or "utils" is not readily available anymore > after the editing. Is it reasonable to suggest an improvement in the > mechanics of edit(), for alleviating this drawback ?
edit() is a hack, so you should expect problems. You're better off keeping your source in an editor and using source() to get it. There is no way it could preserve the environment of a function if you go through the steps you went through above. However, it's a bug (introduced by me last year when converting NULL to .BaseEnv) that it ends up with the base environment instead of the global environment. I'll fix it. Duncan Murdoch ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel