[R] variable substitution in for loops

David Winsemius dwinsemius at comcast.net
Thu Feb 25 02:56:26 CET 2010


On Feb 24, 2010, at 8:18 PM, Jon Erik Ween wrote:

> Friends
>
> I can't quite find a direct answer to this question from the lists,  
> so here goes:
>
> I have several dataframes, 200+ columns 2000+ rows. I wish to script  
> some operations to perform on some of the variables (columns) in the  
> data frames not knowing what the column number is, hence have to  
> refer by name. I have variable names in a text file "varlist". So,  
> something like this:
>
> for (i in 1:length(varlist)){
> 	j<-varlist[i]
> 	v<-mean(Dataset[[j]])
> 	print(v)
> }

Without a data example this is untested guesswork and may fail if  
varlist is not a vector or something that can be coerced to a vector.  
Might help to look at str(varlist),  ...  anyway ...


for (i in varlist){
	
	v<-mean(Dataset[ , i])
	print(v)
}


If it doesn't work, then pay close attention to the error messages.
-- 
David


>
> Now, if I force it
>
> j<-"Var1"
> v<-mean(Dataset[[j]])
> print(v)
>
> then it works, but not if i read the varlist as above.
>
> Looking at "j" I get:
>
>> print(j)
>          V1
> 1 Var1

Right. You are supplying a list as an index.

>
> Hence there is a lot of other stuff read into "j" that confuses  
> "mean".

I think it is confusing "[[", but it's really more guesswork because  
you did not supply a reproducible example.

> I can't figure out how to just get the value of the variable and  
> nothing else. I've tried space separated, comma separated, tab  
> separated lists and all give the same error. I've tried get(),  
> parse()... no go.
>
> Any suggestions?
>
> Thanks a lot
>
> Jon
>
> Soli Deo Gloria
>
> Jon Erik Ween, MD, MS
> Scientist, Kunin-Lunenfeld Applied Research Unit
> Director, Stroke Clinic, Brain Health Clinic, Baycrest Centre
> Assistant Professor, Dept. of Medicine, Div. of Neurology
>    University of Toronto Faculty of Medicine
>
> Kimel Family Building, 6th Floor, Room 644
> Baycrest Centre
> 3560 Bathurst Street
> Toronto, Ontario M6A 2E1
> Canada
>
> Phone: 416-785-2500 x3648
> Fax: 416-785-2484
> Email: jween at klaru-baycrest.on.ca
>
>
> Confidential: This communication and any attachment(s) may contain  
> confidential or privileged information and is intended solely for  
> the address(es) or the entity representing the recipient(s). If you  
> have received this information in error, you are hereby advised to  
> destroy the document and any attachment(s), make no copies of same  
> and inform the sender immediately of the error. Any unauthorized use  
> or disclosure of this information is strictly prohibited.
>
>
>
>
> 	[[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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list