某実験本にあったお下品なコード(1)

最近、とある分野の実験統計の本が出てたので購入した(タイトルでの検索を避けるためにあいまいな書き方をしてる)。

まあ、この分野は例のごとくデファクトがStataだからStataで書かれてるのは仕方がない。しかし、この本の後半はStataのパッケージを使うのではなくStataの行列言語で手でいろいろやろうということになってる。

で、Stataが悪いのか著者の腕が悪いのか、こんなコードがでてくる

gen y0 = y == 0
gen y1 = y == 5
...
gen y16 = y == 80

下品極まりない。でもStataのリファレンスは読みたくないし、となるとこういうコードを生成することになる。こういうとき、さっとirbとかpryを立ち上げて

(0..16).each{|i| print "y#{i} = y == #{5*i} \n"}

と書いて実行して、doファイルに貼り付けて、ああめんどくさいことが終わったとやるのって普通?プログラマとしてはだめなんだろうけど。

この本のStataのコード見てるとそんなのばっか。なので、

  • なんかの言語のテンプレートエンジン使ってdoファイル作る
  • doファイル生成とdoファイル実行をmakefileとか書いて実行させる

みたいな感じにしないと、普通はやってられないと思うんだけどな。

もちろん、Stataのちゃんとした文法調べれば良いんだけど、Stataのスキルって転用不可能だから、そこにリソース割くのは得策じゃないしね。

このやり方を洗練させる方法を調査しても良いが、今の私はStataが手に入るご身分ではないのでできなんですよね。。。ということで、全部RとPythonでやっつける以外の選択肢はないんだけど。

なお、こういう下品なコードにいらついている人が私の周囲にはいなかったのも悲しかったな。。。。なお、このシリーズ、たぶんゆるゆると続いていくのでとりあえず(1)にしてる。