[R] "Goto" loop

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat Nov 1 11:24:29 CET 2008


Patrick Burns wrote:
> Peter Dalgaard wrote:
>> megh wrote:
>>  
>>> Is there anything like "goto" loop, which exists in most computer 
>>> programs?
>>> e.g. I am looking for this kind of stuff :
>>>
>>> if(i < 6) goto "step-02"
>>>
>>> Any idea?
>>>
>>> Regards,
>>>     
>>
>> It doesn't exist, but it can always be replaced by if() {} else {}
>> constructs. (You don't usually see goto in the class of "functional
>> programming languages" to which R belongs.  See also
>> http://en.wikipedia.org/wiki/Edsger_W._Dijkstra .)
>>
>> R does have break, next, and return() which cover some common cases
>> where goto might be used with some reason.
>>
>>   
> 
> 'switch' might well be added to this list.
> 

Hmm, no, I don't think so. The switch expression belongs with structured 
programming paradigms like if, while, for. (Also, by the way, the fact 
that it can be implemented as a function call in R is a nice 
illustration of what lazy evaluation means).

The other ones, say "break", cover situations where goto might be used 
like this

while ( cond ){
    if(...) goto exit;
    ....
}
exit:
...


which can be implemented using plain if and while, but becomes rather 
painful:

while (cond & !done){
    if (....) {
	done <- TRUE
    } else [
	.....
    }
}

Similarly, "continue" jumps to a virtual label at the end of (but 
inside) the loop and return() corresponds to a jump to the end of a 
function.




-- 
    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list