iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
AI & Data

[Data Science系列]成為哥布林的那件事-非常粗(初)心者系列 第 18

[Data Science系列]用R語言來做判定if-直接下判定結果,進城請投幣

透過前面的幾篇,我們可以知道當滿足某條件,將會得到結果TRUE, FALSE
但如果可以經過判定後直接做出判斷的話就更好了

這時我們就可以使用if()這個指令直接將我們要得印出來
讓我們帶入大門警衛的資料來試試看吧
還記得前幾篇的門票費用

大人 <- 5
小孩 <- 3

狐姊_大人 <- 5
狐弟_小孩 <- 1

if ( 大人 == 狐姊_大人) {
  print("門票費用收到,歡迎進城")
  }
[1] "門票費用收到,歡迎進城"

if ( 小孩 == 狐弟_小孩) {
  print("門票費用收到,請進城")
}

這邊我們有注意到當條件滿足時,指令將會印"門票費用收到,收到不找零,歡迎進城"
但當條件未滿足時,指令將無法做出判斷,也就無法印出任何東西。

這時我們就可以用else這個指令,else代表除了if以外滿足的其他條件
再把狐弟的指令帶入吧

if ( 小孩 == 狐弟_小孩) {
  print("門票費用收到,請進城")
} else {
  print("門票費用不足,旁邊繳納後才可入內")
}
[1] "門票費用不足,旁邊繳納後才可入內"

這次我們就可以看到,因狐弟只有付1金,但小孩費用是3金,因此條件未滿足直接列印出else的指令

到目前為止,我們都是設定當有繳足剛好進城費的指令和其它結果的指令
假如我們需再設定個超過進城費的費用呢?
那我們這次以x作為繳納者,這邊只會有3種狀況

  1. 以大人費用來說,繳納金剛好等於5金
  2. 繳納金不足5金
  3. 繳納金超過5金
    這時我們就可以用else if的指令

狀況一

x <- 5
if ( 大人 == x) {
  print("門票費用收到,請進城")
} else if (大人 < x) {
  print("門票費用收到超出不退錢,請進城")
} else {
  print("門票費用不足,旁邊繳納後才可入內")
}
[1] "門票費用收到,請進城"

狀況二

x <- 6
if ( 大人 == x) {
  print("門票費用收到,請進城")
} else if (大人 < x) {
  print("門票費用收到超出不退錢,請進城")
} else {
  print("門票費用不足,旁邊繳納後才可入內")
}
[1] "門票費用收到超出不退錢,請進城"

狀況三

x <- 6
if ( 大人 == x) {
  print("門票費用收到,請進城")
} else if (大人 < x) {
  print("門票費用收到超出不退錢,請進城")
} else {
  print("門票費用不足,旁邊繳納後才可入內")
}
[1] "門票費用不足,旁邊繳納後才可入內"

最後是以else其他的狀況去做設定,當然若情況多於3種以上,我們也可以在程式內插入更多的else if

好啦,謝謝各位勇者的收看,我們明天見


上一篇
[Data Science系列]用R語言來做判定OR ,AND-管制品X聯誼會X偵訊室
下一篇
[Data Science系列]利用R語言來迴圈判定-新型馬車測速提醒器,進城請減速
系列文
[Data Science系列]成為哥布林的那件事-非常粗(初)心者30

尚未有邦友留言

立即登入留言