[R] dataframe in loop

Muting Zhang MT208071 at dal.ca
Tue Mar 30 19:30:50 CEST 2010

hello all:

I would like to thank those who helped me out of the string  
problem..but now I got another problem.
I used R to query from SQL and got a list of crsp_fundno of G-style mutual
funds which is still alive. I use the following codes and got what I want:

g.crspfundno<-sqlQuery(channel,"select crsp_fundno from Fund_style where
wbrger_obj_cd = 'G'order by crsp_fundno")
g.crspfundno (got crsp_fundno of G-style fund from Fund_style table)
y.crspfundno<-sqlQuery(channel,"select crsp_fundno from Fund_hdr where  
= 'N'and end_dt=20091231 order by crsp_fundno")
y.crspfundno (got crsp_fundno of still alive fund from Fund_hdr table)
v.fundno<-intersect(g$key,y$key) (using intersect to get crsp_fundno  
of G-style
mutual funds which is still alive.)

What i need to do next is using the v.fundno I got to query from another table
"Monthly_return" to get the mret coresponding to every v.fundno.
I have only a basic idea of the code:
for (i in 1:length(v.fundno)){
gmret<-sqlQuery(channel,paste("select mret from Monthly_returns where  
crsp_fundno =",test[i],'and caldt > 19900630 order by caldt'))

The loop doesn't work:( I realize it might be the problem that I didnt  
define the dataframe, but my limited knowledge cant help me find out  

I will give you guys a example of my data:
[1] "2899" "2903" "2960" "3094" "3095" "3211"
If I dont do the loop and query for one fund say 2899,
gmret.2899<-sqlQuery(channel,"select caldt, mret from Monthly_returns  
where crsp_fundno = 2899 and caldt > 19900630 order by caldt")
It will give me what I want:
      caldt         mret
1 19900731  0.014204546
2 19900831 -0.050420168
3 19900928 -0.039823009
4 19901031  0.006144393
5 19901130  0.054961832
6 19901231  0.019632639

Can anybody help me with the loop?
Thanks a lot


More information about the R-help mailing list