Behaviour of environment(foo)<- (PR#1509)
Peter Dalgaard BSA wrote:
J.C.Rougier@durham.ac.uk writes:
Hi Everyone, I've noticed that setting the environment of a function from a package actually creates a copy of that function in .GlobalEnv and sets the environment on this copy:
find(.profile)
[1] "package:newblips"
environment(.profile) <- bb1$getEnv() # this is an environment find(.profile)
[1] ".GlobalEnv" "package:newblips"
I don't have a problem with this behaviour (now I understand it!) but
I think that it would help to document it in the help file. May I
suggest that instead of
The assignment form sets the environment of the function or
formula `fun' to the `value' given.
we have
The assignment form sets the environment of the function or
formula \code{fun} to \code{value} if \code{fun} is in the
current environment, otherwise it makes a copy of \code{fun} in
the current environment and sets the environment of the copy.
I think that describes the current procedure: please correct me if I
am wrong!
But this is generic behaviour for *all* attribute assignment. It makes
no sense to describe a specific instance of it. Consider
data(airquality)
f<-function() { x <- class(airquality)<-NULL; ls() }
f()
class(airquality)
I understand. However, I still think that the help page for environment is wrong! Using "enviroment<-" does not necessarily set the environment of the function, as stated. What happened to me is that I modified .profile in the package newblips and then re-assigned its environment but didn't see any change, because it was masked by the copy of .profile in .GlobalEnv that I didn't know I had. That's quite a subtle outcome and I think that changing the environment help page would clarify this for other users. J.
Jonathan Rougier Science Laboratories Department of Mathematical Sciences South Road University of Durham Durham DH1 3LE tel: +44 (0)191 374 2361, fax: +44 (0)191 374 7388 http://www.maths.dur.ac.uk/stats/people/jcr/jcr.html -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._