iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
自我挑戰組

R語言初學紀錄系列 第 15

DAY15-R語言 條件判斷與邏輯操作part.1

  • 分享至 

  • xImage
  •  

前言:終於結束三天的資料結構啦~接下來要學習條件判斷的定義及用法,如果內容有哪些錯誤的地方,請多多包涵~


正文開始-->

  • 在進入條件判斷之前,要先知道什麼是流程控制(flow control),通常在程式語言中分為三個類別,分別為循序(sequence)、選擇(selection)以及重複(repetition)
    • 循序指依順序執行程式,簡單來說就是由上到下執行。
    • 選擇指在許多的條件下,選擇最符合的條件執行。
    • 重複則是不停的循環某項指令。
  • 流程控制中有個專有名詞為控制結構(control structure),主要分為條件指令及迴圈指令。還有一個邏輯判斷,但由於在布林變數以及數學基本運算的章節提過了,所以這次就先略過!

條件指令

  • if … else
  • ifelse
  • switch

迴圈指令

  • for
  • while
  • repeat
  • break
  • next

今天主要會先學習條件判斷~有三種控制結構分別是if … elseifelseswitch。以下先學習寫法⭣⭣⭣

  • if … else
    if與else下方的程式碼必須要使用{ }將程式碼包起來。語法格式通常為
if('條件'){
 '做A'
}else{
 '做B'
}

使用範例:
https://ithelp.ithome.com.tw/upload/images/20240917/20169228NhibdbDitM.png

  • elseif
    在if … else中會使用到的多重邏輯判斷,語法格式為
if('條件'){
 '做A'
}else if{
 '做B'
}else{
 '做C'

完整程式碼:

score <- 75
if (score >= 85) {
  print("優秀")
} else if (score >= 70) {
  print("良好")
} else if (score >= 50) {
  print("及格")
} else {
  print("不及格")
}

使用範例:
https://ithelp.ithome.com.tw/upload/images/20240917/20169228YJrk3k0FYb.png

  • ifelse
    此函式可用更有效率的方式取代if-else,語法格式為
    ifelse('條件', '條件若成立:做A', '如果條件不成立:做B')

使用範例:
https://ithelp.ithome.com.tw/upload/images/20240917/20169228mFr7HWZnEj.png
也可以一次判斷多個向量
https://ithelp.ithome.com.tw/upload/images/20240917/20169228tnEvC5i0Gp.png

  • switch
    功用為選擇,可以處理多重判斷條件,語句寫法為
Switch(指定程式碼行數/名稱,
	(第一行程式碼/名稱)程式/指令
	(第二行程式碼/名稱)程式/指令
	(第三行程式碼/名稱)程式/指令
	…
	)

完整程式碼:

switch ("3",      
        "1" = 1:8,
        "2" = 2:8,
        "3" = 300-110
)

使用範例:
https://ithelp.ithome.com.tw/upload/images/20240917/20169228VD48nP6Iyi.png

參考:

  1. https://hackmd.io/@mutolisp/rJA2g8Jnb?type=view
  2. https://rpubs.com/skydome20/R-Note11-Control_Flow
  3. https://yijutseng.github.io/DataScienceRBook/controlstructure.html#%E6%A2%9D%E4%BB%B6%E5%88%A4%E6%96%B7

上一篇
DAY14-R語言 資料處理part.3
下一篇
DAY16-R語言 條件判斷與邏輯操作part.2
系列文
R語言初學紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言