[R] Create Variable names dynamically

David Winsemius dwinsemius at comcast.net
Thu Mar 31 23:11:29 CEST 2011


On Mar 31, 2011, at 3:46 PM, Henrique Dallazuanna wrote:

> Take a look in ?assign
>
> On Thu, Mar 31, 2011 at 5:42 PM, Noah Silverman <noah at smartmediacorp.com 
> > wrote:
>> Hi,
>>
>> I want to create variable names from within my code, but can't find  
>> any documentation for this.
>>
>> An example is probably the best way to illustrate. I am reading  
>> data in from a file, doing a bunch of stuff, and want to generate  
>> variables with my output.  (I could make a "list of lists" and name  
>> all the elements, but I really want separate variables.)
>>
>>
>> #################
>> #This is just a dummy example, please excuse any shortcuts...
>>
>> data <- read.table("file", ....)
>> animals <- (data[,animal])
>> animals
>>> "cat", "dog", "horse"  # Not known what these are before I read  
>>> the data file
>>
>> # do a bunch of stuff
>>
>> mean_cat <- abc
>> var_cat <- dfd
>> mean_dog <- 123
>> var_dog <- 453
>> etc..
>> ##############

This form can be worked into your loop:

 > dat.a <- read.table(textConnection('cat dog horse\n1 2 3\n4 5 6\n7  
8 9'), header=TRUE)
 > animals <- names(dat.a)
 > assign( paste("mean", animals[1], sep="_"),   
mean(dat.a[[animals[1]]]) )
 > mean_cat
[1] 4

Doesn't seem very R-ish, though.

>>
>> I thought of trying to use the paste() function to create the  
>> variable name, but that doesn't work:
>> for( animal in animals){
>>        paste("mean", animal "_") <- 123
>> }
>>
>> Any ideas???
>
> -- 
> Henrique Dallazuanna
> Curitiba-Paraná-Brasil
> 25° 25' 40" S 49° 16' 22" O
>
> ______________________________________________
> 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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list