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冊

[amazonjs asin=”4274067432″ locale=”JP” title=”プログラミングR―基礎からグラフィックスまで”]

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

Amazon 商品の説明 から

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

スポンサーリンク





今週よく読まれている記事

  1. 学会・会議で英語が絶望的にできなくて困るケース | オンライン開催で「英語力のなさ」を痛感した場合の対処法

    学会・会議で英語ができなくてに困るケース学会やイベント・会議などが、オンラインで開催される…
  2. r tidyverse 使い方 | 列 filter 絞り込み select関数 – dplyrパッケージ

    tidyverseで1つのデータフレームの列の絞り込みは、dplyrパッケージのselect関数を…
  3. プログラミングで疲れた脳をリフレッシュ 〜 鬼滅の刃「感動」と「やる気アップ」でストレス発散!

    ストレス発散は鬼滅で。「50%OFF」で読む!脳のパフォーマンスを上げるには、適度な休憩と…
  4. AWS ディスク容量不足 新しいボリュームを追加する

    バイオインフォマティクスでは大きなファイルを扱うことがあるので、ディスク不足に陥ることがあります。…
  5. 「知っている」と「知らない」とでは、もしものとき、大違いになる – コロナうつ対策

    コロナうつなどという言葉を聞くようになりましたが、派遣切り、解雇、リストラは、これから本格化します…

カテゴリー

人気記事

  1. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  3. Excel, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…

おすすめ記事

  1. シェルスクリプト

    シェルスクリプト | ファイル存在チェック・空ファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…
  2. awk, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  3. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…