if / else
条件式がTRUE
の場合、{ }
内の処理が実行される。FALSE
の場合はelse
以下の内容が実行される。
locate <- 'TOKYO'
if (locate == 'YOKOHAMA') {
print('横浜です。')
} else {
print('横浜ではありません。')
}
[1] "横浜ではありません。"
locate <- 'YOKOHAMA'
if (locate == 'YOKOHAMA') {
print('横浜です。')
} else {
print('横浜ではありません。')
}
[1] "横浜です。"
switch
変数が取る文字列によって、処理を変える。条件式が3つ以上の値を取る場合は、if
文よりも可読性が上がることが多い。
使い方
switch(EXPR, …)
引数 | 内容 |
---|---|
EXPR | 変数、もしくは文字列。数値が入力された場合は文字列に変換される。 |
… | 条件に合致した場合に実行される処理。 |
method <- 'addition'
x <- 5
y <- 7
switch(method
,'addition' = x+y
,'subtraction' = x-y
,'multiplication' = x*y
,'division' = x/y
,print('method is error.')
)
[1] 12
if
を用いても同様のことが出来るが、switch()
を使用した方がif
文よりも幾分処理速度が速いらしい。
条件によって変数に代入する値を変える
イコールの右辺を()
で囲い、普通の代入式を書く。
> switch(country,
+ 'GB' = (URL <- "http://www.xxxxx.com/"),
+ 'JP' = (URL <- "http://www.xxxxx.co.jp/"),
+ 'CN' = (URL <- "http://www.xxxxx.cn/")
+ )
ifelse
ifelse(test, yes, no)
testの条件がTRUEのときはyesの返り値、FALSEの時はnoの返り値を渡す
> ifelse(-5:5 > 0, "positive", "negative")
[1] "negative" "negative" "negative" "negative" "negative"
[6] "negative" "positive" "positive" "positive" "positive"
[11] "positive"