11 懶人的最愛:for 迴圈

撰寫程式(任何程式,不限於 R 語言)相當重要的一個環節是迴圈與流程控制,對於從未接觸過程式的初學者可能會對於這個章節的標題感到陌生與擔心,其實完全不必,應當要將迴圈視為幫助我們寫出更簡潔程式的利器!

11.1 印出 12 個月的月份名稱

假設我們現在想做一件事情:將 R 語言中的一個內建向量 month.name 分別輸出在命令列。土法煉鋼的方法是像這樣,複製貼上程式碼,然後修改中括號 [] 裡面的索引值:

month.name # 1-12 月的月份名稱
##  [1] "January"   "February"  "March"     "April"     "May"      
##  [6] "June"      "July"      "August"    "September" "October"  
## [11] "November"  "December"
month.name[1]
## [1] "January"
month.name[2]
## [1] "February"
month.name[3]
## [1] "March"
month.name[4]
## [1] "April"
month.name[5]
## [1] "May"
month.name[6]
## [1] "June"
month.name[7]
## [1] "July"
month.name[8]
## [1] "August"
month.name[9]
## [1] "September"
month.name[10]
## [1] "October"
month.name[11]
## [1] "November"
month.name[12]
## [1] "December"

當碰到這樣子需要大量手工複製貼上的事情時,就可以求助迴圈來幫助我們!

11.2 for 迴圈

一個 for 迴圈的外觀架構長得像這個樣子:

for (i in x){
    # 每次迭代要執行的程式
}

在第一次的迭代(iteration)中,ix[1];第二次的迭代中,ix[2];以此類推,然後在每一次迭代時,都會執行大括號 {} 裡面的程式。

我們開始撰寫多行且有縮排的程式,這時候使用左上角的來源(Source)區塊編寫就比在命令列(Console)撰寫來得更適合。

for (month in month.name){
   print(month)
}
## [1] "January"
## [1] "February"
## [1] "March"
## [1] "April"
## [1] "May"
## [1] "June"
## [1] "July"
## [1] "August"
## [1] "September"
## [1] "October"
## [1] "November"
## [1] "December"