Gabor Grothendieck <[EMAIL PROTECTED]> writes: > Should the 'for' loop in the following example not return 3 rather than 2? > The Language Manual says that it returns the result of the last evaluated > statement and that would be the i before the 'break'. 'repeat' and 'while' > have the same behavior. > > R> (for(i in 1:10) if (i==3) { i; break } else i) > [1] 2
Hmmm... First, let's look at some variants: > (for(i in 1:10) {pi; if (i==3) { i; break } else 123}) [1] 123 Notice that you're getting neither "2" nor "3.1415926", but the "123" from the previous iteration. Similarly > (for(i in 1:10) {pi; if (i==3) { i; break }else 123; 456}) [1] 456 So you are getting the result of the last _completely_ evaluated statement (the enclosing "{"-statement is not completed either). -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel