[R] [SPAM] - Re: for/if loop - Bayesian Filter detected spam

Henrik Bengtsson hb at stat.berkeley.edu
Thu Jan 29 00:08:14 CET 2009


On Wed, Jan 28, 2009 at 2:41 PM,  <davidr at rhotrading.com> wrote:
> Well, maybe you are just bad at typing then ;-)
>
> The lines rr==ii, pp==pp+1, etc. are not setting rr and pp but comparing
> them.
> Probably you want rr <- ii and pp <- pp+1, etc.
> And the last line of your loop 'ii=ii+1' means that,
> since the for statement is already incrementing ii,
> you are incrementing it twice and skipping the even indices. Omit this
> line probably.

That is actually not the case (because of the scoping rules for for(),
I think).  Example:

> for (ii in 1:5) { print(ii); ii <- ii + 1; }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Another "counter intuitive" (though it isn't) example:

for (ii in 1:3) {
  cat("Outer ii:",ii,"\n");
  for (ii in ii:3) {
    cat("  Inner ii:",ii,"\n");
  }
}

Outer ii: 1
  Inner ii: 1
  Inner ii: 2
  Inner ii: 3
Outer ii: 2
  Inner ii: 2
  Inner ii: 3
Outer ii: 3
  Inner ii: 3

My $.02

/Henrik

> You are also forgetting(?) the operator precedence in
> sum(lselb1[rr:ii-1]) and similar lines.
> Note that this is equivalent to sum(lselb1[(rr-1):(ii-1)]); is that what
> you meant?
> Or did you want sum(lselb1[rr:(ii-1)])?
> You are changing some variables but not asking R to print anything as
> far as I can see.
> To see the results, ask R to print hll.
>
> HTH,
> -- David
>
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> On Behalf Of SnowManPaddington
> Sent: Wednesday, January 28, 2009 3:59 PM
> To: r-help at r-project.org
> Subject: [SPAM] - Re: [R] for/if loop - Bayesian Filter detected spam
>
>
> 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.
>
> ______________________________________________
> 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.
>
> ______________________________________________
> 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