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.