[R] function to avoid <<-

Adams, Jean jvadams at usgs.gov
Tue Dec 2 20:40:47 CET 2014


Glad to see this query and the responses.  You all just helped me to
eliminate the use of global variables from my R package.  I knew they were
not recommended, but I didn't know how to get around using them.

Thanks!

Jean

On Tue, Dec 2, 2014 at 10:59 AM, Karim Mezhoud <kmezhoud at gmail.com> wrote:

> OK thanks as:
>
> myenv <- new.env(parent = emptyenv())
> fun <- function(){
> fun1 <- function(){
> myenv$X <- 5
> }
>
> }
> fun()
> ls(myenv)
> #X
> X
> #5
>
>   Ô__
>  c/ /'_;~~~~kmezhoud
> (*) \(*)   ⴽⴰⵔⵉⵎ  ⵎⴻⵣⵀⵓⴷ
> http://bioinformatics.tn/
>
>
>
> On Tue, Dec 2, 2014 at 5:47 PM, Greg Snow <538280 at gmail.com> wrote:
>
> > By "At the top level" Hadley meant to put that code outside of the
> > function definition.  In you source file that line should be very near
> the
> > top, before any function definitions.  Then "myenv" will not be temporary
> > (well it will go away when you end the R session).  Further, when this
> code
> > is compiled into a package then "myenv" becomes package local, meaning
> that
> > functions within the package can access it and the objects inside of it,
> > but it will not interfere with any other packages or the global
> environment.
> >
> > On Tue, Dec 2, 2014 at 9:32 AM, Karim Mezhoud <kmezhoud at gmail.com>
> wrote:
> >
> >> Thanks Dr Hadley,
> >>
> >> but when I use a function the myenv remains temporary and I am to face
> the
> >> same problem.
> >>
> >>
> >> fun <- function(){
> >>
> >> myenv <- new.env(parent = emptyenv())
> >>
> >> fun1 <- function(){
> >> myenv$X <- 5
> >> }
> >>
> >> }
> >>
> >> ls(myEnv)
> >> #character(0)
> >>
> >>   Ô__
> >>  c/ /'_;~~~~kmezhoud
> >> (*) \(*)   ⴽⴰⵔⵉⵎ  ⵎⴻⵣⵀⵓⴷ
> >> http://bioinformatics.tn/
> >>
> >>
> >>
> >> On Tue, Dec 2, 2014 at 4:17 PM, Hadley Wickham <h.wickham at gmail.com>
> >> wrote:
> >>
> >> > At the top level do:
> >> >
> >> > myenv <- new.env(parent = emptyenv())
> >> >
> >> > Then in your functions do
> >> >
> >> > myenv$x <- 50
> >> > myenv$x
> >> >
> >> > etc
> >> >
> >> > You also should not be using data() in that way. Perhaps you want
> >> > R/sysdata.rda. See http://r-pkgs.had.co.nz/data.html for more
> details.
> >> >
> >> > Hadley
> >> >
> >> > On Tue, Dec 2, 2014 at 2:28 AM, Karim Mezhoud <kmezhoud at gmail.com>
> >> wrote:
> >> > > Dear All,
> >> > >
> >> > > I am writing a GUIpackage that needs global variables.
> >> > > I had many warning message when I checked the code as for example:
> >> > > geteSet: no visible binding for global variable ‘curselectCases’
> >> > > I would like to write a function that creates a global place for
> >> Objects
> >> > to
> >> > > be loaded as:
> >> > >
> >> > >
> >> > > Fun <- function(){
> >> > >
> >> > > Object <- 5
> >> > >
> >> > > Var2Global <- function(Object){
> >> > > .myDataEnv <- new.env(parent=emptyenv()) # not exported
> >> > > isLoaded <- function(Object) {
> >> > >     exists(Object, .myDataEnv)
> >> > > }
> >> > > getData <- function(Object) {
> >> > >     if (!isLoaded(Object)) data(Object, envir=.myDataEnv)
> >> > >     .myDataEnv[[Object]]
> >> > > }
> >> > > }
> >> > >
> >> > > }
> >> > >
> >> > > To avoid the use of:  Object <<- 5
> >> > >
> >> > > but it seems not working yet. Object == 5 is not a global variable
> >> after
> >> > > running Fun().
> >> > >
> >> > > Any Idea?
> >> > > Thanks
> >> > >   Ô__
> >> > >  c/ /'_;~~~~kmezhoud
> >> > > (*) \(*)   ⴽⴰⵔⵉⵎ  ⵎⴻⵣⵀⵓⴷ
> >> > > http://bioinformatics.tn/
> >> > >
> >> > >         [[alternative HTML version deleted]]
> >> > >
> >> > > ______________________________________________
> >> > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >> > > 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.
> >> >
> >> >
> >> >
> >> > --
> >> > http://had.co.nz/
> >> >
> >>
> >>         [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >> 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.
> >>
> >
> >
> >
> > --
> > Gregory (Greg) L. Snow Ph.D.
> > 538280 at gmail.com
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list