I have looked a bit more at this issue. Using new.env() I am able to put
new vars into the new environment by using the "env$..." syntax. This
allows to eliminate all variables in one step with "rm(env)", thus
fixing problem 2) in my original mail. Problem 1) though is unsolved, or
even worsened, since now I need to prepend the environment name to each
variable whenever I use one. Even doing "attach(env)" does not help,
since the global environment has higher priority than the local one.

Does anyone have a suggestion? Ideally, I would like to have a separate
environment like I have inside a user-defined function.

Thanks
Christian Prinoth

> -----Original Message-----
> From: Christian Prinoth
> Sent: 27 July, 2009 13:33
> To: 'r-help@r-project.org'
> Subject: creating and populating an environment
>
> Hi, I often work with R by writing long(ish) Excel-VBA macros
> interspersed with calls to R via RExcel. A typical example of
> this would be:
>
> Sub VBAMacro()
>       'fetch some data from an excel sheet
>       'do some basic stuff on said data
>       'transfer data from vba to R
>       'run some R statements
>       'get data back to vba
>       'show results on the excel sheet
>       'clean R by deleting all vars that were created: rrun
> "rm(a,b,c,....)"
> end sub
>
> This has two obvious disadvantages, as I have to make sure:
> 1) not to use R variable names which may already exist
> 2) to remove all variables (garbage collection)
>
> In order to overcome these issues I was wondering if I should
> execute all R statements inside the R macro in a separate
> namespace. I have looked at new.env() but am not really sure
> how it is supposed to be used. If I type "temp<-new.env()",
> how do I make sure that all variables declared from then on
> end up in the "temp" environment? Once I am done, is
> "rm(temp)" sufficient to get rid of all its content?
>
> Basically, I would like to replace the above example with:
> Sub VBAMacro()
>       rrun "A<-new.env()"
>       'fetch some data from an excel sheet
>       'do some basic stuff on said data
>       'transfer data from vba to R
>       'run some R statements
>       'get data back to vba
>       'show results on the excel sheet
>       rrun "rm(A)"
> end sub
>
> Thanks
> Christian Prinoth
>

DISCLAIMER:\ L'utilizzo non autorizzato del presente mes...{{dropped:16}}

______________________________________________
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