Break
CoddyのRジャーニー「基礎」セクションの一部。レッスン 40/78。
すべての反復を終える前に、loopを途中で終了する必要がある場合があります。break文を使うと、特定のconditionが満たされたときに、loopを直ちに停止できます。
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}出力:
[1] 1
[1] 2
[1] 3
[1] 4loop は 1 から 10 まで実行されるように設定されていましたが、i が 5 に達すると、break 文によって loop が完全に停止しました。break は直ちに終了するため、5 は決して出力されなかったことに注目してください。
これは、何かを探すときの while ループで特に役立ちます。
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)出力:
[1] 5ここで、while (TRUE)は通常、永遠に実行されますが、breakによって、二乗が20を超える最初の数をfindすると停止します。このパターンは、conditionが満たされるまで検索する必要がある場合によく使われます。
チャレンジ
簡単input から limit という number を読み取ります。for loop を使用して 1 から limit まで反復しますが、3 と 7 の both で割り切れる最初の number に遭遇した when、break を使用して loop を早期に停止します。
condition を確認する before に各 number を Print します。3 と 7 の both で割り切れる number を find したら、その number を Print してから loop から抜けます。
After the loop ends、print() を使用して "Loop ended" を Print します。
たとえば、input が 30 の場合、出力は次のようになります。
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"loop は 21 で停止します。これは 3 と 7 の both で割り切れる最初の number だからです(21 = 3 × 7)。
自分で試してみよう
# 入力を読み取る
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))
# TODO: 以下にコードを書いてください
# 1からlimitまでのforループを使用する
# 条件をチェックする前に各数値を出力する
# 3と7の両方で割り切れる数を見つけたらbreakする
# ヒント: 割り切れるかどうかを確認するには%%演算子を使用する
# ループの後に"Loop ended"を出力する
print("Loop ended")このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ