英国でデータサイエンスを学ぶ

30代になってから海外で統計学・機械学習・プログラミングを勉強

MENU

Rで条件分岐(if、else、else if)

Rで条件分岐を行う方法のメモです。個人的にはC++に似ているのでとっつきやすかったです。

Rで単純な条件分岐(if)

例えば、aというオブジェクトが整数5の場合は画面に"hello world!"という文字列を表示する方法は、以下のようになります。

a <- 3
if(a == 5){
    print("hello world!")
}
#上記コードでは何も出力されません。
a <- 5
if(a == 5){
    print("hello world!")
}
#上記コードでは、"hello world!"と出力されます。


Rで条件分岐(条件を満たさない場合)(if、else)

条件を満たさない場合の記述は、C++と一緒でelseで指定可能です。
例えば、オブジェクトaが5の倍数でない時にはその旨を出力するコードは以下の通りです。

a <- 3
if(a == 5){
    print("hello world!")
}else{
    print("a is not an integral multiple of 5")
}
#上記コードでは、"a is not an integral multiple of 5"と出力されます。


Rで複層的な条件分岐(if, else if)

複層的な条件分岐を行いたい場合、例えば、条件1、条件1を満たさないが条件2を満たすといった場合の方法です。
具体例として、オブジェクトaが15の倍数ではない、かつオブジェクトaが3の倍数である時に文字列を出力するコードです。

a <- 9
if(a%%15 == 0){
    print("a is an integral multiple of 15")
}else if(a%%3 == 0){
    print("a is an integral multiple of 3")
}
#この場合、"a is an integral multiple of 3"と出力されます。

ここで"a%%15"というのはオブジェクトaを15で割った余りです。
余りが0かどうかを見ているので、15の倍数かどうかを判断していることになります。
他の算術演算子については以下をご参考に。
detailed-balance.hatenablog.com


Rで複層的な条件分岐(if)

複層的な条件分岐を行いたい場合、例えば、条件1、条件2、条件3を満たす時の方法です。
具体例として、オブジェクトaが5の倍数で、かつオブジェクトaが3の倍数でもある時に文字列を出力するコードです。

a <- 15
if(a%%5 == 0){
    if(a%%3 == 0){
        print("a is an integral multiple of 15")
    }
}
#この場合、"a is an integral multiple of 15"と出力されます。

ここで"a%%5"というのはオブジェクトaを5で割った余りです。
余りが0かどうかを見ているので、5の倍数かどうかを判断していることになります。


Rで複数条件で分岐(if &&)

上記の複層的な条件分岐は、1度に複数の条件を課すことで同様の結果を得られます。
具体的には

a <- 15
if((a%%5 == 0) && (a%%3 == 0)){
        print("a is an integral multiple of 15")
}
#この場合、"a is an integral multiple of 15"と出力されます。

ここでは"&&"で複数の条件を繋げています。
他のブール演算子については以下を参照ください。
detailed-balance.hatenablog.com