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. They are all reserved words.
if(cond) expr
if(cond) cons.expr  else  alt.exprfor(var in seq) expr
while(cond) expr
repeat expr
break
next
A length-one logical vector that is not NA.
    Conditions of length greater than one are currently accepted with a
    warning, but only the first element is used.  An error is signalled
    instead when the environment variable _R_CHECK_LENGTH_1_CONDITION_
    is set to true.  Other types are coerced to logical
    if possible, ignoring any class.
A syntactical name for a variable.
An expression evaluating to a vector (including a list and
    an expression) or to a pairlist or NULL.  A
    factor value will be coerced to a character vector.
An expression in a formal sense.  This is either a
    simple expression or a so called compound expression, usually
    of the form { expr1 ; expr2 }.
if returns the value of the expression evaluated, or
  NULL invisibly if none was (which may happen if there is no
  else).
for, while and repeat return NULL invisibly.
  for sets var to the last used element of seq,
  or to NULL if it was of length zero.
break and next do not return a value as they transfer
  control within the loop.
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.
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.
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