Rで変数を変えながらfor文を回す
for文を回すとき、代入する変数を毎回変えたいことがしばしばあるが、やり方が分からなかった。(ちゃんと調べたことがなかった)やっと調べたので、忘れないうちにメモ。
assign()関数とpaste()関数を使うとできる!
まずassign()関数は、名前に値を付置する、つまり代入する関数。例えば、
asssign(a,1) a # 1 # もしくは、こんな使い方も可能 b <- "x" assign(b,1:10) x # [1] 1 2 3 4 5 6 7 8 9 10
paste()関数は文字列と文字列をつなぎ合わせる。便利な所は、引数に変数を持ってくることもできるところ。sep=は、繋ぎ目の記号等を決められる。(この場合は何もなし)
c <- "ゴレライ" paste("ラッスン",c,sep="") # [1] "ラッスンゴレライ"
この2つを組み合わせればfor文で変数を変えていくことができる。
for(i in 1:10){ nam <- paste("y",i,sep="") assign(nam,i*i) } y1;y2;y3;y8;y9;y10 # [1] 1 # [1] 4 # [1] 9 # [1] 64 # [1] 81 # [1] 100
(参考)
http://www.is.titech.ac.jp/~mase/mase/html.jp/temp/assign.jp.html
http://futabooo.hatenablog.com/entry/20110910/1315634652