読者です 読者をやめる 読者になる 読者になる

からあげ定食

僻地の大学生の進捗発表。R,Python,yacht,twitteR,自然言語処理,将棋,機械学習,ヨット

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