2014/12/29

[R] 第10篇 控制流程 (下)

承接上篇,接續控制流程的介紹。
repeat 會啟動無限迴圈,像是沒有終止條件的 while,程式會在迴圈中執行,永遠不會停,那要有停止辦法才對,沒錯,就是關鍵字 break
用 [R] 第6篇 資料操作 (下) 裡提到的 sample 來當作取亂數的方式,下面的程式會持續執行,當 a >= b 時,就將 b 設定成 a,然後再隨機亂數產生 b,重複執行,直到程式走到 break,也就是 a < b 時。break 能運用的地方不只在 repeat 中,跟迴圈有關的皆能使用,像是上篇提到的 whilefor 皆可以使用。
> a <- sample(1:5, size=1)
> repeat {
      b <- sample(1:5, size=1)
      print(a)
      print(b)
      if((a - b) < 0) {
          break
      } else {
          a <- b
      }
  }
[1] 3  # a
[1] 1  # b
[1] 1  # a
[1] 1  # b
[1] 1  # a
[1] 4  # b
next 是跳過的指令,不是跳出結束迴圈,所以迴圈依然會繼續執行,只是當下這一次不往下繼續執行。下面的程式在 i 為 1, 2 時,印出 a 後就執行 next,迴圈內的程式就不繼續,然後到下個 i,如果沒有 next 指令,結果會是 ababbbb,next 讓程式在印出 a 後跳過印 b。
> for(i in 1:5) {
      if(i <= 2) {
          print('a')
          next
      }
      print('b')
  }
[1] "a"
[1] "a"
[1] "b"
[1] "b"
[1] "b"
return 是在函式結束時回傳 value 用的。

沒有留言:

張貼留言