R logo

if 構文、if else 構文、if else if 構文の覚書。

If 構文

iF 構文は、他の反復 構文と同じく、

if (条件){処理}

で表す。

r-if-1

 

例1:rnorm の標準正規分布で出てきた数値が正の数だったら、"Greater than 1" とプリントする。

"rnorm" は、正規分布の値から無作為に数値を抽出する関数。

rnorm(抽出する数字の数, mean = 平均値, SD = 標準偏差)

という形で使用するが、mean と sd を指定しない場合は mean = 0, sd = a (-1 to 1) の標準正規分布になる。

# 標準正規分布から無作為に1個の数値を抽出
x <- rnorm(1)

# もし出てきた値が正の数(x > 1)だったら、"Greater than 1" とプリント
if(x > 0){
    print("Greater than 1")
    }

これを何回か実行すると、

1回目 -0.056...、2回目 -0.342...、3回目 -0.998...、4回目 0.746...と出てきた。

で、最初の3回はうんともすんとも言わず、4回目でコンソールに

output
[1] "Greater than 0"

と出力された。

If Else 構文

If 構文だけだと、条件に合わなかった場合に何もアクションが起こらないが、"else" で「それ以外の場合は……」という条件をつけると、FALSE用の処理を行う。

r-if-2

 

例2:rnorm の標準正規分布で出てきた数値が正の数だったら、"Greater than 0" 、それ以外 (ゼロもしくは負の数) だったら "Less or equal to 0" とプリントする。

# 正の数 (x > 0) なら "Greater than 0, それ以外なら "Less or equal to 0"
x <- rnorm(1) if(x > 0){
    print("Greater than 0")
    } else{
    print("Less or equal to 0")
    }

これを実行すると、

output
[1] "Greater than 0"
[1] "Greater than 0"
[1] "Less or equal to 0"

1回目 0.436...、2回目 0.129...、3回目 -0.876...と出てきたので、

1回目 Greater than 0、2回目 Greater than 0、3回目 Less or equal to 0...と出力された。

If Else If 構文

最初の条件がFALSEだった時に、次の条件を続ける事も可能。

if else if

 

例3:rnorm の標準正規分布で出てきた数値が正の数 (x > 0) だったら、"Greater than 0" 、負の数 (x < 0) だったら "Less than to 0" 、それ以外 (x=0) だったら "Equal to 0" とプリントする。

# 正の数 (x > 0) なら "Greater than 0, 負の数 (x < 0) なら "Less than 0", それ以外 (x = 0) なら "Equal to 0"
x <- rnorm(1)
if(x > 0){
print("Greater than 0")
} else if (x < 0){
    print("Less than 0")
} else{
    print("Equal to 0")
}

これを実行すると、

output
[1] "Greater than 0"
[1] "Less than 0"
[1] "Greater than 0"

Equal to 0になる確率はかなり低いので、これくらいで。