統計プログラムRの勉強日記

Rに関して勉強してきたことを紹介します

【R】for関数(for文)の使い方

f:id:apprentice_bioinfo:20190817111347p:plain

はじめに

本記事ではfor関数(for文)の使い方についてR初心者を対象に説明します。
具体例や動作のイメージ図などを作りましたので、ぜひ参考にしてみてください!
( 応用的な使い方はこちらにまとめたのでぜひ! 【R】for文の応用的な使い方 )

for関数とは

for関数はRの中で繰り返し同じ処理をおこなうときに便利な関数です。同じ解析処理を何度も繰り返すときはfor関数を使うと書くコードの量を少なくすることができます。

使い方

基本的な使い方は以下のとおりです。

for( 変数名 in 数列 ){
  繰り返したい処理
}
  • 変数名      :適当な名前や文字列にする( i とすることが多い)
  • 数列 (文字列も可)   :上の変数名に順番に代入していく数列 or 文字列
  • 繰り返したい処理 :実際に繰り返し実行される部分

単純な数列を代入する場合

下のコードは1から10までひとつずつ表示させる数を増やしていくコードです。
このコードでは i に1から10まで順番に代入しています。

for(i in 1:10){  # i に1から10までの数字を順番に代入する
   print(1 : i)  #1から代入した数字までを print (出力)する
}

出力される結果はこんな感じになります。(クリックで表示)

[1] 1
[1] 1 2
[1] 1 2 3
[1] 1 2 3 4
[1] 1 2 3 4 5
[1] 1 2 3 4 5 6
[1] 1 2 3 4 5 6 7
[1] 1 2 3 4 5 6 7 8
[1] 1 2 3 4 5 6 7 8 9
[1] 1 2 3 4 5 6 7 8 9 10


特定の数字を代入する場合

下のコードは1、2、3、11、12、101、102の二乗を計算するコードです。
このコードでは x に代入した特定の数字を i に順番に代入しています。

x = c(1, 2, 11, 12, 101, 102) # x に 1, 2, 11, 12, 101, 102を代入
for(i in x) { # x に代入した値を順番に i に代入する
  print(i^2) # i の二乗を計算して出力
}

出力される結果はこんな感じになります。(クリックで表示)

[1] 1
[1] 4
[1] 121
[1] 144
[1] 10201
[1] 10404



文字列代入する場合

下のコードは名前をつけた変数に乱数を順番に代入していくコードです。
このコードでは i に文字列を代入しています。

for(i in c("first", "second", "Third", "fourth")){  # i に"first"などを順番に代入
  assign(i, rnorm(n = 10, mean = 10, sd = 1))  # 代入した文字を変数名として10個の平均10, SD1の乱数を格納
}
data.frame(first, second, Third, fourth) # 作成した変数をデータテーブルにして表示

出力される結果はこんな感じになります。(クリックで表示)

first second Third fourth
1 10.72927753094 9.0413005521977 11.7033439780127 10.0290021957769
2 10.0098543779461 12.0731871676629 8.85341296279646 10.3433102874057
3 11.9555858576471 11.8324374959766 11.1363573308334 9.74024538072774
4 10.0266324816972 9.69738253835519 10.3295565019739 8.95206092990919
5 10.2307184243867 11.7629625445833 11.6158976843298 8.9663711078048
6 9.12916658392523 10.5618600014883 10.484754115856 10.1188117255904
7 10.7863536575798 9.65718493278916 9.56901931768513 9.46209109220699
8 8.64456866731471 10.6528553631509 11.002801548752 8.98895994070989
9 10.6712670380865 9.99807452800524 11.5410905062192 8.78932680445671
10 10.50899338052 9.84092695041929 10.5125712603032 12.190662152486

動作のイメージ

for関数の動作イメージは下図のようなイメージです。


For文の動作イメージ

  • ① 変数名(一般的に i )に 数列 or 文字列を1つ目から順番に1つずつ代入
  • ②  { } 内の処理を上から順番に実行
    (このとき①で定義した変数を用いる処理が少なくとも1つは必要)
  • ③ ①の処理に戻る(①では列中の前回代入したものの次の要素を代入)
  • ④ ①で順番に全て代入し終えたとき繰り返しループを抜けてfor関数を終了

まとめ

今回はfor関数の基本的な使い方について紹介しました。
for文は処理に時間がかかるケースが多いので、できれば使わないでパッケージや関数などを上手に使いたいところですが、使いこなせると便利だと思います。 どのように処理されているのかをイメージしながら使ってみてください!

発展的な使い方やfor文以外の繰り返し処理の方法についてはこちらでまとめていますので、もしよかったらご覧ください。

apprentice-bioinfo.hatenablog.com

apprentice-bioinfo.hatenablog.com