ループ変数の扱いに戸惑ったのでメモ. こんな感じの処理を書いて,ループ処理を行う時にループの中で加算を行おうと思った時に,
for(i in 1:4){ cat("i=",i,"\n"); i <- i + 1; cat("i=",i,"\n"); }
Cだと出力結果は,こんな感じになるはず.
i=1 i=2 i=3 i=4
ところが,Rでこの処理を実行すると,
i=1 i=2 i=2 i=3 i=3 i=4 i=4 i=5
というものが出力される.ネームスペース的に考えると,ループの中と外は別物として考えるのは,実は自然なのかもしれない(もしかしたら私が勘違いしてるのかもしれないけど)んだけど,慣れてないのでちょっと戸惑います.
そのおかげで,
for(i in 1:4){ for(i in 1:4){ cat(i) } }
というコードを書いてしまっても,ちゃんと実行できるのってはメリットなんだか,どうなんだか.