Assigning variables using a loop
Hi Nick,
It is typically not a good idea to write functions that automatically
assign variables to the global environment (makes it easy to overwrite
something valuable without knowing you are overwriting it), but if
that is really the best choice for your situation, I would do
something like (inside your function):
# note, if global assignment not needed, just return this
mydata <- list(x = 1, y = 2, z = 3)
lapply(names(mydata), function(x) {
assign(x, mydata[[x]], pos = .GlobalEnv)
})
HTH,
Josh
On Sat, Apr 23, 2011 at 10:51 AM, Nick Mosely <mosely at uw.edu> wrote:
Hello R-world,
I have multiple variables that have been generated within a function.
I would like to assign them each to the Global Environment. I've tried
the following:
x = 1
y = 2
z = 3
for (i in c(x,y,z)) {
?assign("i",i,pos=.GlobalEnv)
}
i
[1] 3
Obviously, the problem is that the code is assigning numbers to the
the new variable i. I tried to get cute using paste:
x = 1
y = 2
z = 3
for (i in c(x,y,z)) {
+ ? assign(paste(i),i,pos=.GlobalEnv) + } But paste enters "1" when i is x, rather than the desired "x". Does anyone know of a solution to this problem? Thanks, Nick
______________________________________________ R-help at 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.
Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/