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]]
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]]
Hi, An other alternative using "assign" function func <- function(){ X <- 5 assign("X", X, envir = .GlobalEnv) } ?__ c/ /'_;~~~~kmezhoud (*) \(*) ????? ?????? http://bioinformatics.tn/ On Tue, Dec 2, 2014 at 8:40 PM, Adams, Jean <jvadams at usgs.gov> wrote:> 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]]