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]]
______________________________________________
[email protected] 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.