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 and
an expression) or to a pairlist or NULL . |
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; control is transferred to the first statement outside the
inner-most loop. next
halts the processing of the current
iteration and advances the looping index. Both break
and
next
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
is to always use braces, 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
, and is read-only:
assigning to it does not alter 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
.
if
returns the value of the expression evaluated, or
NULL
if none was (which may happen if there is no else
).
for
, while
and repeat
return the value of the
last expression evaluated (or NULL
if none was), invisibly.
for
sets var
to the last used element of seq
,
or to NULL
if it was of length zero.
break
and next
have value NULL
, although it would
be strange to look for a return value.
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") }