if(cond) expr
if(cond) cons.expr else alt.expr
for(var in seq) expr
while(cond) expr
repeat expr
break
next
NA
.
Conditions of length greater than one are accepted with a warning, but
only the first element is used. Other types are coerced to logical
if possible, ignoring any class.
NULL
. A
factor value will be coerced to a character vector.{ 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 seq
in a for
loop is evaluated at the start of
the loop; changing it subsequently does not affect the loop. If
seq
has length zero the body of the loop is skipped. Otherwise the
variable var
is assigned in turn the value of each element of
seq
. You can assign to var
within the body of the loop,
but this will not affect the next iteration. When the loop terminates,
var
remains as a variable containing its latest value.
Syntax
for the basic R syntax and operators,
Paren
for parentheses and braces.for(i in 1:5) print(1:i)
for(n in c(2,5,10,20,50)) {
x <- stats::rnorm(n)
cat(n, ": ", sum(x^2), "\n", sep = "")
}
f <- factor(sample(letters[1:5], 10, replace = TRUE))
for(i in unique(f)) print(i)
Run the code above in your browser using DataLab