[R] Assigning variables using a loop

Nick Mosely mosely at uw.edu
Sun Apr 24 00:35:45 CEST 2011


Thank you for your help. That works for me.

On Sat, Apr 23, 2011 at 1:53 PM, Joshua Wiley <jwiley.psych at gmail.com> wrote:
> 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/
>



More information about the R-help mailing list