iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
0
自我挑戰組

新手 R 語言學習紀錄系列 第 21

Day 21- R語言 迴圈控制-for, while

  • 分享至 

  • xImage
  •  

Day 21- R語言for, while迴圈控制
(前言:內個,我只是個剛接觸程式設計的小萌新,如果內文內容或程式碼寫的不對,還請各位大大指教 Orz)

昨天已經學過了if, ifelse, switch等流程控制的寫法,今天繼續學習for, while迴圈控制。

4. For迴圈控制
For的迴圈控制類型是重複,指定某序列在特定順序下重複操作

用很經典的九九乘法表來當作練習,程式碼如下:

for(i in 1:9){ #第一個for條件
  for(x in 1:9){ #第二個for條件
      if(i >= x){ #設定if條件,避免重複計算數字相同的乘法
      result <- i * x #儲存計算結果至一個變數上
        cat(i, "*", x, "=", result, "   ") #用cat函數將數值、符號及計算結果結合起來
      }
  }
  cat("\n")
}

輸出結果為:
https://ithelp.ithome.com.tw/upload/images/20191007/20120887ko5bPzOJOa.png
剛剛在程式碼中有一行cat(“\n”),那一行程式碼代表「換行」,那為什麼要放在第二和第三個大括號中間呢?我有做了一些實驗:
---如果不放的話,輸出結果會全部黏在一起
---如果放在cat(i, "*", x, "=", result, " ")後面,輸出結果會變成一行一行的的九九乘法表(大概45行左右)
---如果放在第一個大括弧後面的話,輸出結果還是一行一行的,不同的是,一組跟一組之間會多空一行 (例:一的乘法表一組,二的乘法表一組…)
---如果放在第二個大括弧後面,輸出結果就會像上面那樣
---如果放在最後一行就沒作用,跟沒放一樣

5. while迴圈控制
While的迴圈控制類型也是重複,代表意義為「根據某條件重複執行」

i <- 3
while(i <= 40) {
  i <- i + 2
  i < 50
  print(i)
}

以上面程式碼為例,有一個變數i=3,只要i小等於40就加2,一直加到50為上限,然後印出i 值。

最後,我們可以使用repeat函數做類似while的事情,只是要跳出迴圈時就要用break來停止迴圈,如果有很多個混圈的話,可以使用next函數強制程式跳到下一個迴圈。

參考資料:

  1. https://www.itread01.com/content/1543764486.html
  2. https://hackmd.io/@mutolisp/rJA2g8Jnb?type=view
  3. https://joe11051105.gitbooks.io/r_basic/content/control_flow/loop.html

上一篇
Day 20- R語言 流程控制-if, ifelse, switch
下一篇
Day 22- R語言 匯入&整理外部檔案資料
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言