On Mon, Jul 18, 2011 at 7:16 PM, Nipesh Bajaj <bajaj141...@gmail.com> wrote:
> Hi all, I am trying to understand the R's "environment" concept
> however the underlying help files look quite technical to me. Can
> experts here provide me some more intuitive ideas behind this concept
> like, why it is there, what exactly it is doing in R's architecture
> etc.?
>
> I mainly need some non-technical intuitive explanation.

 You can think of it as a box into which you can put (using "assign")
and get (using "get") things.

 > e=new.env()
 > assign("foo",99,env=e)
 > get("foo",env=e)
 [1] 99

 Now, the interesting thing is that when you copy an environment, you
dont make a new copy of everything in it:

 > z=e
 > get("foo",env=z)
 [1] 99

Now if I change 'foo' in z, as if by magic it changes in e as well:

 > assign("foo","Set in z",env=z)
 > get("foo",env=e)
 [1] "Set in z"

Because e and z are the same environment:

 > z
 <environment: 0x8869bec>
 > e
 <environment: 0x8869bec>

This gives you a way of doing pass-by-reference in R, but you won't be
doing it that way soon because R version something has proper
reference classes.

 That's probably all you need to know to get you started.

Barry

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to