日誌

連続して変わる数値の繰り返し処理を入れ子で実行する(double loop)

この記事の内容は以下のwebサイトを参考にしました。

Double loops

まずは単純な例。iの部分が1から3まで変わっていき,
計算結果がそれぞれ出力されます。

forvalues i=1/3{
 display 1+`i'
}

2
3
4

このように1+1,1+2,1+3の計算結果が出力されました。
これを,式の部分もテキストとして表示したいときには,
localマクロを使います。式の部分はiがそのまま変わる
だけですが,答えの部分がiとは異なるためです。ここでは
答えの部分をsumと置いています。

forvalues i=1/3{
local sum=1+`i'
 display "1+`i'=`sum'"
}

1+1=2
1+2=3
1+3=4


次は,入れ子構造のloopです。具体的には,式の1+の部分も数値を
増やしていきたいときの場合です。この方法は,double loopまたは
nested loopと呼ばれるみたいです。

forvalues i=1/3{
  forvalues j=1/3{
    local sum=`i'+`j'
      display "`i'+`j'=`sum'"
  }
}

1+1=2
1+2=3
1+3=4
2+1=3
2+2=4
2+3=5
3+1=4
3+2=5
3+3=6

関連記事として,たくさんの変数に同じ処理を繰り返したいとき も参照

変更履歴
20150507 題名修正