On Wed, Oct 5, 2011 at 12:27 AM, andrewH <ahoer...@rprogress.org> wrote: > Dear folks, > > I’m trying to build a function to create and make available some variables I > frequently use for testing purposes. Suppose I have a function that takes > some inputs and creates (internally) several named objects. Say, > > fun1 <- function(x, y, z) {obj1 <- x; obj2 <- y; obj3 <- z > <missing stuff> > } > > Here is the challenge: After I run it, I want the objects to be available in > the calling environment, but not necessarily in the global environment. I > want them to be individually available, not as part of a list or some larger > object. I can not figure out how to do this. If I understand the situation > correctly, I am trying to move several separate objects from the environment > of the function to the environment in which the function was invoked (the > “calling environment,” yes?). > > I’m pretty sure there is a command to do this, but I’m not sure how to find > it. Any help would be greatly appreciated – either on the necessary code, or > on how to search for it, or a reference to a good discussion of this family > of problems.
If the question is how to write things into the calling environment (also called the parent frame in R) then its like this: fun1 <- function(x, y, z, env = parent.frame()) { env$x <- x env$y <- y env$z <- z } fun1(1, 2, 3) x # 1 However, this seems very close to object oriented programming where fun1 is a method and x, y and z are properties and might represent a better organization of your program. For example, library(proto) p <- proto(fun1 = function(., x, y, z) { .$x <- x .$y <- y .$z <- z }) p$fun1(1, 2, 3) # set properties x, y, z p$x # 1 -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ 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.