R 使い方 if 条件分岐 スクリプトの書き方

R の if文は、フロー制御で最も単純な条件分岐です。条件に「一致したかどうか」という判断で、次に実行するコマンドを変更したりするときに使います。Rのif文の「書き方」、ANDやORを使った複数条件の指定の仕方などを、サンプルを交えてまとめます。

スポンサーリンク



R – if文による条件判断

R – if文の書き方

R の if文では複数の条件を判断することができます。上から順に判定されます。「else if」や「else」は必要なときに記述します。条件の中に条件を書く、入れ子構造をとることができます。ちょっとした条件を簡潔に書きたい場合は、「if」の後に「{}(中括弧)」を付けないで書くこともできます。但し、この場合、条件が真の場合に実行できる文は1つです。

if – elsif – else – end

if (条件) {
...
}
else if (条件2) {
...
}
else {
...
}

R – if文の真偽判定

R の if文において、真偽における「偽」は「FALSE」です。尚、論理値が期待されるところに数がセットされると、「0」が「FALSE」になります。

複数の条件をまとめるには、論理演算子「&&」「||」を使います。否定は「!」です。

プログラム

test_if.r
#! /usr/bin/Rscript

argv=commandArgs(T)

options(warn=-1) # supress warnings temporarilyx

aaa <- as.numeric(argv[1]); if (is.na(aaa)) quit("no") if ( aaa==1 ) sprintf("aaa==1 aaa=%d", aaa); if ( aaa>1 ) {
  if (aaa>2 && aaa<3) { sprintf("aaa>2 aaa=%d", aaa)
  }
  else if (aaa>3 && aaa<=5) { sprintf("aaa>3 aaa=%d", aaa)
  }
  else {
    sprintf("aaa>5 aaa=%d", aaa)
  }
}

スクリプト実行

$ ./test_if.r "AAA"
(終了)
$ ./test_if.r 1
aaa==1 aaa=1
$ ./test_if.r 4
aaa>3 aaa=4

プログラムについて

test_if.rでは、R の if文を数種類ためしてみました。「変数aaa」について、不正な文字を強制変換でNAとするとき、quitで即座に終了しました。1のときもシンプルなif文を使い、1より大きいときは条件を入れ子構造にして更に条件を細かく分岐させています。入れ子内部で、if – else if – else を使いました。

今回はわざと複数の条件を入れ子にしましたが、プログラムが複雑になりすぎる場合は、他の制御構造を利用したり・例えば1以下の場合には先にプログラムを完結させるような仕組みで、プログラムがシンプルになるように工夫した方が良いと思います。

R オススメの1冊

様々な分野でRの応用が見られるようになってきている。本書は、PerlやRubyと同様に、Rを一般のプログラミング言語として解説している。Rのプログラミングの知識を高めたい読者にとって有用な書となることだろう。

Amazon 商品の説明 から

【関連】 RやPython・Linux関連のオススメの本をまとめています!

スポンサーリンク