On Feb 26, 2013, at 2:40 AM, José Miguel Delgado wrote: > Dear R-help, > > I wrote the following lines in order to use a variable from a parent frame in > my callM() function. I would like to solve this by only editing the > callM(function). When I run this code I obtain a empty list, meaning that > eval(ls(),sys.frame(-1)) could not access the variables in the parent > function. Any suggestions? Thanks in advance! > > metaCall <- function() > { > NN <- 99 > callM() > } > > callM <- function() > { > Ls <- eval(ls(),sys.frame(-1)) > print(Ls) > ### use Ls to call a certain model named M
That doesn't make much sense. > } > > metaCall() > I don't think you need the eval() call: metaCall <- function() { NN <- 99 callM() } callM <- function() { Ls <- ls(env=sys.frame(-1)) cat(Ls) } metaCall() NN You should be aware that metaCall will not return anything since the last value is from the cat()-call or the print()-call and they each return NULL. If you wanted to go on from there and do something with 'NN", which is no longer a number but rather a character vector, you could, however. Oh, I think I finally see .... the eval() was an attempt to retrieve the object named "NN"" in the parent.frame? That means you need : ?get metaCall <- function() { NN <- 99 callM() } callM <- function() { Ls <- ls(env=sys.frame(-1)) str(get(Ls, env=sys.frame(-1))) } metaCall() # num 99 -- David Winsemius Alameda, CA, USA ______________________________________________ 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.