| Control {base} | R Documentation |
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.
if(cond) expr if(cond) cons.expr else alt.expr for(var in seq) expr while(cond) expr repeat expr break next
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 }.
|
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.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Syntax for the basic R syntax and operators,
Paren for parentheses and braces; further,
ifelse, switch.
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")
}