Hi, it's my first time to write a loop with R for my homework. This loop is part of the function. I wanna assign values for hll according to panel [ii,1]=pp. I didn't get any error message in this part. but then when I further calculate another stuff with hll, the function can't return. I think it must be some problem in my loop. Probably something stupid or easy. But I tried to look for previous posts in forum and read R language help. But none can help.. Thanks! for (ii in 1:100){ for (pp in 1:pp+1){ for (rr in 1:rr+1){ if (panel[ii,1]!=pp) { hll(pp,1)=ColSums(lselb1(rr:ii-1,1)) hll(pp,2)=ColSums(lselb2(rr:ii-1,1)) rr=ii pp=pp+1 } else { hll(pp,1)=ColSums(lselb1(rr:ii,1)) hll(pp,2)=ColSums(lselb2(rr:ii,1)) rr=ii pp=pp+1} } }}} in fact I have the corresponding Gauss code here. But I really don't know how to write such loop in R. rr=1; ii=1; pp=1; do until ii==n+1; if pan[ii,1] ne pp; hll[pp,1]=sumc(lselb1[rr:ii-1,1]); hll[pp,2]=sumc(lselb2[rr:ii-1,1]); rr=ii; pp=pp+1; endif; if ii==n; hll[pp,1]=sumc(lselb1[rr:ii,1]); hll[pp,2]=sumc(lselb2[rr:ii,1]); rr=ii; pp=pp+1; endif; ii=ii+1; endo; -- View this message in context: http://www.nabble.com/for-if-loop-tp21701496p21701496.html Sent from the R help mailing list archive at Nabble.com.
What are you trying to do with > for (pp in 1:pp+1){ ? Also, note that 1:rr+1 and 1:(rr+1) mean different things. Zhou
Within the loops you are changing the loop variables (pp & rr). Why are you doing this? THis might be causing your problem of what sounds like an infinite loop. You probably want to rethink what you are trying to do in the loop. On Wed, Jan 28, 2009 at 3:21 AM, SnowManPaddington <wiwiana at gmail.com> wrote:> > Hi, it's my first time to write a loop with R for my homework. This loop is > part of the function. I wanna assign values for hll according to panel > [ii,1]=pp. I didn't get any error message in this part. but then when I > further calculate another stuff with hll, the function can't return. I think > it must be some problem in my loop. Probably something stupid or easy. But I > tried to look for previous posts in forum and read R language help. But none > can help.. Thanks! > > > > for (ii in 1:100){ > for (pp in 1:pp+1){ > for (rr in 1:rr+1){ > if (panel[ii,1]!=pp) > { > hll(pp,1)=ColSums(lselb1(rr:ii-1,1)) > hll(pp,2)=ColSums(lselb2(rr:ii-1,1)) > rr=ii > pp=pp+1 > } > else > { > hll(pp,1)=ColSums(lselb1(rr:ii,1)) > hll(pp,2)=ColSums(lselb2(rr:ii,1)) > rr=ii > pp=pp+1} > } > }}} > > > in fact I have the corresponding Gauss code here. But I really don't know > how to write such loop in R. > > rr=1; > ii=1; > pp=1; > do until ii==n+1; > if pan[ii,1] ne pp; > hll[pp,1]=sumc(lselb1[rr:ii-1,1]); > hll[pp,2]=sumc(lselb2[rr:ii-1,1]); > rr=ii; > pp=pp+1; > endif; > if ii==n; > hll[pp,1]=sumc(lselb1[rr:ii,1]); > hll[pp,2]=sumc(lselb2[rr:ii,1]); > rr=ii; > pp=pp+1; > endif; > ii=ii+1; > endo; > > -- > View this message in context: http://www.nabble.com/for-if-loop-tp21701496p21701496.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
Hi ya, I've revised the code (and finally know what I m doing.. :-D) The good news is.. I dont get any error message, but the bad news is the following optim generate no results. I still think there is something to do with my loop... can anyone advice? Thanks again!!! pp=1 rr=1 for (ii in 1:n){ if (!(panel[ii] == pp)){ hll[pp,1] == sum(lselb1[rr:ii-1]) hll[pp,2] == sum(lselb2[rr:ii-1]) rr==ii pp==pp+1 } if (ii==n){ hll[pp,1] == sum(lselb1[rr:ii]) hll[pp,2] == sum(lselb2[rr:ii]) rr==ii pp==pp+1 } ii=ii+1 } pp=1 rr=1 for (ii in 1:n){ if (!(panel[ii] == pp)){ hll[pp,1] == sum(lselb1[rr:ii-1]) hll[pp,2] == sum(lselb2[rr:ii-1]) rr==ii pp==pp+1 } if (ii==n){ hll[pp,1] == sum(lselb1[rr:ii]) hll[pp,2] == sum(lselb2[rr:ii]) rr==ii pp==pp+1 } ii=ii+1 } SnowManPaddington wrote:> > Hi, it's my first time to write a loop with R for my homework. This loop > is part of the function. I wanna assign values for hll according to panel > [ii,1]=pp. I didn't get any error message in this part. but then when I > further calculate another stuff with hll, the function can't return. I > think it must be some problem in my loop. Probably something stupid or > easy. But I tried to look for previous posts in forum and read R language > help. But none can help.. Thanks! > > > > for (ii in 1:100){ > for (pp in 1:pp+1){ > for (rr in 1:rr+1){ > if (panel[ii,1]!=pp) > { > hll(pp,1)=ColSums(lselb1(rr:ii-1,1)) > hll(pp,2)=ColSums(lselb2(rr:ii-1,1)) > rr=ii > pp=pp+1 > } > else > { > hll(pp,1)=ColSums(lselb1(rr:ii,1)) > hll(pp,2)=ColSums(lselb2(rr:ii,1)) > rr=ii > pp=pp+1} > } > }}} > > > in fact I have the corresponding Gauss code here. But I really don't know > how to write such loop in R. > > rr=1; > ii=1; > pp=1; > do until ii==n+1; > if pan[ii,1] ne pp; > hll[pp,1]=sumc(lselb1[rr:ii-1,1]); > hll[pp,2]=sumc(lselb2[rr:ii-1,1]); > rr=ii; > pp=pp+1; > endif; > if ii==n; > hll[pp,1]=sumc(lselb1[rr:ii,1]); > hll[pp,2]=sumc(lselb2[rr:ii,1]); > rr=ii; > pp=pp+1; > endif; > ii=ii+1; > endo; > >-- View this message in context: http://www.nabble.com/for-if-loop-tp21701496p21715928.html Sent from the R help mailing list archive at Nabble.com.