R 使い方 switch スクリプトの書き方

バイオインフォ道場、くまぞうです。

switch文は条件に「一致したかどうか」という判断に基づいて、実行するコマンドを変更したりするときに使います。if文と異なり、複数の条件とそれに対応した処理をまとめて記述できるので便利です。if文を使って同じことができますが、よりシンプルに記述できて、プログラムの見通しも良くなります。

スポンサーリンク



switch文による条件判断

switch文の書き方

switch文では、式に対する複数の条件を判断することができます。条件を増やしたい時は「条件」を追加します。条件には、文字列(ラベル)を使います。「その他の条件」は、「ラベルなし」で指定することができます。

case文の一般的な形式

value <- switch(式
                "ラベル1" = 対応した処理,
                "ラベル2" = 対応した処理,
                "ラベル3" = 対応した処理,
                ...,
                条件に合致しない場合の処理
         )

switch文の判断

switchの式とラベルの文字列比較を行います。

プログラム

test_switch.r
#! /usr/bin/Rscript

argv=commandArgs(T)

items <- switch(argv[1],
	  "1"  = c("dataA", "dataB"),
	  "2"  = c("dataA", "dataC"),
	  "3"  = c("dataB", "dataC"),
	  "AB" = c("AAA",   "BBB"),
	  c("x", "y"))

png(paste("fig", argv[1], ".png", sep=""))
plot(rnorm(100), rnorm(100), xlab=items[1], ylab=items[2])
dev.off()

プログラム実行

test_switch
$ chmod +x test_switch.r
$ ./test_swtich.r 1
fig1.png を生成
$ ./test_swtich.r AB
figAB.png を生成
$ ./test_swtich.r ABC
figABC.png を生成
fig1

fig1

figAB

figAB

figABC

figABC

プログラムについて

test_switch.rでは、switchの条件を数種類ためしてみました。コマンドライン引数で与えられた文字と、条件のラベルを判断して分岐処理を行います。文字が「1」〜「3」または「AB」の文字列に合致したとき、対応するxy軸のラベルを使ってpng画像を出力します。条件に該当しないデフォルトでは、x軸に「x」・y軸に「y」と表示するようにしました。ラベルだけの切り替えを行いましたが、データも切り替えるように考えるとバッチ処理などに利用できると思います。

スポンサーリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です