for
構文は
| 1 | for ( ループ変数 in リスト) | 
最も基本的な例は連番のリストによる回数指定。
| 1 2 3 4 5 6 7 8 9 10 11 12 | > for (i in 1:5) print(i) [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 > for (i in seq(0, 8, 2)) print(i) [1] 0 [1] 2 [1] 4 [1] 6 [1] 8 | 
繰り返し内容が複数にわたる場合は{}で囲む。
| 1 2 3 4 5 6 7 8 9 | > for (i in 1:5) { +   cat(i) +   cat("\n") + } 1 2 3 4 5 | 
break文で最も内側のループから抜ける。
| 1 2 3 4 5 6 7 | > for (i in 1:5) { +   print(i) +   if (i == 3) break + } [1] 1 [1] 2 [1] 3 | 
next文はループ内の残りの部分を実行せず次のループへ。
| 1 2 3 4 5 6 7 | > for (i in 1:5) { +   if (i < 3) next +   print(i) + } [1] 3 [1] 4 [1] 5 | 
ループ範囲に変数を使った場合、その変数は中で参照・変更可能だが、ループ回数そのものは変更されない。
以下の例では、xで指定された1:5はforループ開始時点でディープコピーされ、ループの中でxが変更されても、繰り返し回数は変化していない。
| 1 2 3 4 5 6 7 8 9 10 11 12 | > x <- 1:5 > for (i in x) { +   x <- c(x, i) +   print(x) + } [1] 1 2 3 4 5 1 [1] 1 2 3 4 5 1 2 [1] 1 2 3 4 5 1 2 3 [1] 1 2 3 4 5 1 2 3 4  [1] 1 2 3 4 5 1 2 3 4 5 > x  [1] 1 2 3 4 5 1 2 3 4 5 | 
while
他の言語と同じ。
| 1 2 3 4 5 | n = 1 while (n < 5) {   print(n)   n <- n + 1 } | 
break文やnext文も使える。
| 1 2 3 4 5 6 7 8 9 10 11 | > n <- 1 > while (n < 10) { +   n <- n + 1 +   if (n < 4) next +   if (n == 8) break +   print(n) + } [1] 4 [1] 5 [1] 6 [1] 7 | 
repeat
repeatで無限ループを実行。
| 1 2 3 4 5 6 7 8 9 10 11 | > n <- 1 > repeat { +   print(n) +   n <- n + 1 +   if (n > 5) break + } [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 |