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") }