iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 7
1
Big Data

R語言與機器學習見面會系列 第 7

Day07 R語言的流程控制(loop)

在跑步世界裡,用上堅強的跑者意志,可以讓人重複跑著台北田徑場甜甜圈,直到跑足指定的課表。
在電腦世界裡,使用迴圈(Loop),我們也可以讓電腦重複執行陳述式或區塊內的陳述式,直到指定的程式條件。

2010 F1馬來西亞站

http://ithelp.ithome.com.tw/upload/images/20170116/20103434Z4eKHJT2q7.png

攝於雪邦賽道(吉隆坡), 馬來西亞

R語言迴圈


R語言中的迴圈種類:

  • for: 逐一查看陣列執行陳述式或區塊內的陳述式。
  • while:重複執行陳述式或區塊內的陳述式,直到指定的條件為 false 為止。
  • repeat: 重複執行陳述式或區塊內的陳述式,直到break。

接下來,我們在資料夾MyR新增一支Day07.R

http://ithelp.ithome.com.tw/upload/images/20161207/20103434YMPVBXhaGL.png

練習三種迴圈寫法,都要指定執行Lucky seven:7。

for loop


在Day07.R中輸入程式碼

#for loop 列舉i從1到7 
for (i in 1:7) { 
    cat(i," for loop" ,"\r\n") 
} 

#c# foreach

執行結果

http://ithelp.ithome.com.tw/upload/images/20161207/20103434C4aQjJbQpR.png

while loop


在Day07.R中輸入程式碼

#while loop 
x <- 0 
while (x < 7) { 
    x <- x + 1 
    cat(x, " while loop" , "\r\n") 
} 

執行結果

http://ithelp.ithome.com.tw/upload/images/20161207/20103434h6U48Ir9TV.png

repeat loop


在Day07.R中輸入程式碼

#repeat loop 
x <- 0 
repeat { 
    x <- x + 1 
    if (x > 7) { 
        break; 
    } 
    cat(x, " repeat loop", "\r\n") 
} 

執行結果
http://ithelp.ithome.com.tw/upload/images/20161207/20103434bI7I3vOmqX.png

陷入迴圈的兩個人;
孟獲問諸葛亮說,為什麼你每次都可以抓到我?
諸葛亮回孟獲說,為什麼你每次都可以被我抓?
於是這個迴圈持續了7次,史稱七擒七縱。

PIT Stop or DNF

迴圈中的中斷點或是跳過這筆繼續下一筆,都是小寫英文單字。

  • next : 跳過這筆,繼續下一筆 。
  • break : 跳出迴圈。

在Day07.R中輸入程式碼

next

v <- LETTERS[1:5] 
for (al in v) { 
 
 
    if (al == "C") { 
        next 
    } 
    cat(al, " next in loop", "\r\n") 
} 

執行結果:
http://ithelp.ithome.com.tw/upload/images/20161207/20103434dAMrxfBwUF.png

*LETTERS代表A-Z,取1:5表示A、B、C、D、E。

break

v <- LETTERS[1:5] 
for (al in v) { 
 
 
    if (al == "C") { 
        break 
    } 
    cat(al, " break in loop", "\r\n") 
} 

執行結果:
http://ithelp.ithome.com.tw/upload/images/20161207/20103434YMckJZsz9O.png

小結:
Next是指繼續下一筆,所以印完AB跳過C繼續印DE。(C# Continue)
beark 則是 中斷整個迴圈,所以印完AB就停下來。(C# Beark)

九九乘法表


完成了迴圈的複習,來試試小二的夢靨,曾經消失十年的九九乘法表!

在Day07.R中輸入程式碼

#九九乘法表 
for (i in 1:9) { 
    for (j in 1:9) { 
        k = i * j 
        cat(i) 
        cat(" x ") 
        cat(j) 
        cat(" = ") 
        cat(k) 
        cat("  ") 
    } 
    cat("\n") 
}

執行結果:
http://ithelp.ithome.com.tw/upload/images/20161207/20103434Z722GQEjrb.png

利用兩層迴圈實現。


哈!老婆覺得看賽車就是看車手繞圈圈,但喜歡的人就覺得很熱血!

2010 F1 馬來西亞站

http://ithelp.ithome.com.tw/upload/images/20170116/20103434O12v7QtKE3.png

攝於雪邦賽道(吉隆坡), 馬來西亞


上一篇
Day06 R語言的流程控制(ifelse)
下一篇
Day08 R語言的函式(Function)
系列文
R語言與機器學習見面會30

尚未有邦友留言

立即登入留言