The break command can only break the innermost loop (the b loop in your 
case).  Rewrite the loop control logic.  Here is one example

end.a <- FALSE;
for (a in 1:10) {
   print(a);
   for (b in 1:20) {
     if (a > 5 && b > 5 ) {
       end.a <- TRUE;
       break; # Breaks the b loop
     }
   };
   if ( end.a ) break;
}

(though I prefer rewriting as while statements once the logic gets 
complex like this).

There is, AFAIK, no equivalent of (say) perl's "last LABEL" 
functionality.  (I miss perl's rich contunue/last/next/redo functionality.)

Hope this helps a little.

Allan



On 03/07/09 17:45, NatsS wrote:
> Hello,
>
> Please could someone explain
>
> break and next??
>
> Is there a way to break a loop that is not the innermost loop??
>
> for example:
> #=========================
> dim A = 1000 x 3
> dim B = 2000 x 3
>
> for (a in 1:1000){
>      for (b in 1:2000){
>           expr = intersect(A[a,1]:A[a,2],B[b,1]:B[b,2])
>           if (!is.na(expr[1])){
>               indx = which(expr[1]>= A[,2])
>               if (length(indx)>  1){
>                  for(c in 1:length(indx))
>                       X[a,1] = paste(.....)
>                       .....
>               }else {
>                   X[a,1] = A[indx, 3]
>               }
>            }
>            ###BREAK - Here does not work
>                  NEXT # am not sure if this is doing what I want it to??
>        }
> }
> #=============================
>
> Any help and advice would be much appreciated!
>
> Many Thanks,
> NS
>    

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to