[R] Re-assigning variables stored as character strings in anothervariable

William Dunlap wdunlap at tibco.com
Mon Feb 22 20:59:04 CET 2010



Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com  

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Anthony Damico
> Sent: Monday, February 22, 2010 11:50 AM
> To: r-help at r-project.org
> Subject: [R] Re-assigning variables stored as character 
> strings in anothervariable
> 
> Is there any way to get the last line of this code to double 
> the contents of
> a and b without naming them directly?
> 
> #create variables a and b
> a<-5
> b<-10
> 
> #store variable names a and b in variables c and d
> c<-"a"
> d<-"b"
> 
> e<-c(c,d)
> 
> #loop through both variables
> for (i in e){
> 
> #print the numbers five and ten using only the variables c and d
> #this line works fine
> print(eval(parse(text=i)))*2
> 
> #re-assign variables a and b using only variables c and d
> #this line does not work -
> parse(text=i) <- eval(parse(text=i))*2
> }

Don't use eval(parse(text=...)) until you have
run out of more reliable options.  In most cases
storing your variables in a list makes life
easier.  You don't have to maintain a separate dataset
with the names of the variables of interest and you
don't have to worry about variables with funny
names that won't parse.  Try replacing your code with:

   > vars <- list(a=7, b=13)
   > for(i in names(vars)) {
   +     print(vars[[i]])
   +     vars[[i]] <- vars[[i]] * 2
   + }
   [1] 7
   [1] 13
   > vars
   $a
   [1] 14
   
   $b
   [1] 26

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.
> 



More information about the R-help mailing list