Control {base}R Documentation

Control Flow

Description

These are the basic control-flow constructs of the R language. They function in much the same way as control statements in any Algol-like language.

Usage

if(cond) expr
if(cond) cons.expr  else  alt.expr

for(var in seq) expr
while(cond) expr
repeat expr
break
next

Arguments

cond A length-one logical vector that is not NA. Conditions of length greater than one are accepted with a warning, but only the first element is used.
var A syntactical name for a variable.
seq An expression evaluating to a vector (including a list).
expr, cons.expr, alt.expr An expression in a formal sense. This is either a simple expression or a so called compound expression, usually of the form { expr1 ; expr2 }.

Details

break breaks out of a for, while or repeat loop, that is goes to the first statement after the loop. next transfer control to the first statement of the loop (after advancing var along seq in a for loop). They both apply only to the innermost of nested loops.

Note that it is a common mistake to forget to put braces ({ .. }) around your statements, e.g., after if(..) or for(....). In particular, you should not have a newline between } and else to avoid a syntax error in entering a if ... else construct at the keyboard or via source. For that reason, one (somewhat extreme) attitude of defensive programming uses braces always, e.g., for if clauses.

The index seq in a for loop is evaluated at the start of the loop; changing it subsequently does not affect the loop. The variable var has the same type as seq. If seq is a factor (which is not strictly allowed) then its internal codes are used: the effect is that of as.integer not as.vector.

References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

See Also

Syntax for the basic R syntax and operators, Paren for parentheses and braces; further, ifelse, switch.

Examples

for(i in 1:5) print(1:i)
for(n in c(2,5,10,20,50)) {
   x <- rnorm(n)
   cat(n,":", sum(x^2),"\n")
}

[Package base version 2.0.0 Index]