2.2 条件分岐:if
逐次処理では,記述されたコードが上から順番に実行されるということを説明した.
では,状況によって実行したいコードを変えたい場合にはどのようにすればよいだろうか.
例えば,変数x
の値が1であれば関数f1()
を,値が0であれば関数f0()
を実行したいとする.
逐次処理的に
と記述すると,もちろんf1(a)
もf0(a)
も実行されてしまう.
どのケースであれエラーが出ないのであれば問題なく処理されるが,もしf1,f0
はそれぞれ1と0の場合しか受け付けず,それ以外ではエラーを返すような関数であれば,この処理は必ずエラーを引き起こすことになる.
このように,場合わけして実行される処理を変えたいときにif
文が利用される.
具体的には
if (条件式1) {
処理
} else if(条件式2) {
処理
} else {
処理
}
のように記述する.if(条件式)
の条件式には,必ずTRUE, FALSE
として評価される値が返すように記述する必要があることに注意されたい.
if
文も上から順番に評価が行われ,最初に条件式がTRUE
と評価された処理を実行し,その他の場合の処理は行わずif
文の次の処理が行われる.
実際に例を見てみよう.
x <- 2
if (x == 0) {
print("this is 0")
}else if(x == 1) {
print("this is 1")
}else if(x == 2) {
print("this is 2")
}else{
print("unknown")
}
## [1] "this is 2"
ここではx
は2なのでthis is 2
が表示される.
Exercise 2.2 (条件分岐) 次の問いに答えよ.
変数
s
にtech-ml-studymeeting
という文字列を格納し,s
の文字列の6~7文字目がml
という文字列であれば,hello
,そうでなければgoodbye
という文字列を表示する処理を書け.変数
y
に21を代入し,y
の値が3で割り切れるならyes
,そうでなければno
と出力処理を書け.