1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

製薬企業研究者がRの制御文についてまとめてみた

Last updated at Posted at 2019-12-01

はじめに

ここでは、R初心者向けに「制御文」について解説していきます。

条件分岐

条件によって処理を分けたい場合に使います。

if文

ifに続く条件式がTRUEなら、処理が実行されます。

if_1.R
x <- 2
y <- 2

if (x == y) {
  print("xとyは等しい。")
}

この例では、x == yTRUEとなるので、xとyは等しい。と出力されます。

また、elseを入れると、ifに続く条件式の判定がTRUEでなかった場合の処理を記述できます。

if_2.R
x <- 2
y <- 3

if (x == y) {
  print("xとyは等しい。")
} else {
  print("xとyは等しくない。")
}

さらに、else ifを入れると、それより上の条件式の判定が全てFALSEで、else ifに続く条件式がTRUEだったときの処理を記述できます。

if_3.R
x <- 2
y <- 3

if (x == y) {
  print("xとyは等しい。")
} else if (x == 2){
  print("xとyは等しくないが、xは2である。")
} else {
  print("xとyは等しくなく、xは2ではない。")
}

if (x == 2 && x != y){
  print("xは2であり、xとyは等しくない。")
}else if (x == y || y == 4) {
  print("xとyは等しい、またはyは4である。")
} else {
  print("よく分からない。")
}

if (x == 2) {
  if (y == 3) {
    print("xは2であり、yは3である。")
  } else if (x == y) {
    print("xとyは2である。")
  } else {
    print("xは2であり、yは2でも3でもない。")
  }
} else if (x == 3) {
  print("xは3である。")
} else {
  print("xは2でも3でもない。")
}

switch文

変数の値によって処理を分けたいときなどに使います。

switch_1.R
z <- 3

switch (z,
        "1" = print("zは1です。"),
        "2" = print("zは2です。"),
        "3" = print("zは3です。"),
        print("それ以外です。")
        )

以下のように、ifでも書き換えることはできますが、やや長くなり可読性も下がります。

switch_2.R
z <- 3

if (z == 1) {
  print("zは1です。")
} else if (z == 2) {
  print("zは2です。")
} else if (z == 3) {
  print("zは3です。")
} else {
  print("それ以外です。")
}

反復処理

同じ処理を複数回繰り返す時に使います。

for文

一定回数だけ同じ処理を繰り返す時に使います。

for_1.R
for (i in 1:5) {
  print(i)
}


nums <- seq(1, 5)

for (i in nums) {
  print(i)
}

breakを使うと、反復処理を中止することができます。ifと組み合わせて、特定の条件が成立した時に処理を中止するといったときに使うことが多いです。

for_2.R
nums <- seq(1, 5)

for (i in nums) {
  if (i == 3) {
    break
  }
  print(i)
}

nextを使うと、反復処理をスキップすることができます。こちらもifと組み合わせて使うことが多いです。

for_3.R
nums <- seq(1, 5)

for (i in nums) {
  if (i == 3) {
    next
  }
  print(i)
}

while文

ある条件が成立する間のみ反復処理をする場合に使います。

while_1.R
num <- 1

while (num < 5) {
  print(num)
  num = num + 1
}

while (num < 5) {
  num = num + 1
  print(num)
}

whileの中も上から下へ順番に処理が実行されるため、書き方によって実行結果が変わる場合があります。

変数の値の更新を書き忘れると、処理が無限回数繰り返される(無限ループとなる)ので注意が必要です。

while_2.R
num <- 1

# while (num < 5) {
  # print(num)
# }

# while (TRUE) {
  # print(num)
# }

repeat文

無限ループになります。
処理を止めるために、breakなどを書く必要があります。

repeat_1.R
num <- 1

repeat {
  if (num < 5) {
    print(num)
    num <- num + 1
  } else {
    break
  }
}

反復回数が決まっている場合はforを、反復回数が決まっていない場合はwhile(またはrepeat)を使うようにすると良いです。

まとめ

ここでは、Rの制御文として「if」「switch」「for」「while」「repeat」を紹介しました。
プログラミングの中心とも言える構文なので、実際に使いながら身につけていくと良いでしょう。

参考資料・リンク

プログラミング言語Rとは?統計分析に強い?

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?