はじめに
本記事では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関数の動作イメージは下図のようなイメージです。
- ① 変数名(一般的に i )に 数列 or 文字列を1つ目から順番に1つずつ代入
- ② { } 内の処理を上から順番に実行
(このとき①で定義した変数を用いる処理が少なくとも1つは必要) - ③ ①の処理に戻る(①では列中の前回代入したものの次の要素を代入)
- ④ ①で順番に全て代入し終えたとき繰り返しループを抜けてfor関数を終了
まとめ
今回はfor
関数の基本的な使い方について紹介しました。
for
文は処理に時間がかかるケースが多いので、できれば使わないでパッケージや関数などを上手に使いたいところですが、使いこなせると便利だと思います。
どのように処理されているのかをイメージしながら使ってみてください!
発展的な使い方やfor文以外の繰り返し処理の方法についてはこちらでまとめていますので、もしよかったらご覧ください。