Rでloopを使って動的な名前の変数を作成したい
目的
Rにおいて、loop処理内で各loop毎に異なった変数を作成したい。
問題
pasteで各loop毎に文字列を作成して、その文字を変数名にしようとした。
for (n in 1:3) { v_name <- paste('v', n, sep = '') #変数名作成(v1,v2,v3) v_name <- n #作成した変数名(v1,v2,v3)にnを格納 } v1 # => エラー: オブジェクト 'v1' がありません
この場合、例えば1週目(n=1)ではv_name = n
はv1 <- 1
ではなくv_name <- 1
として処理される。おそらく、オブジェクトのv_name(=v1)ではなく、新規変数名としてv_nameを新たに宣言しているという扱い。
対処
assign関数を使う。これはassign(変数名, 代入したい値)
という宣言で変数名 <- 代入したい値
と等価。
for (n in 1:3) { v_name <- paste('v', n, sep = '') #変数名作成(v1,v2,v3) assign(v_name, n) #作成した変数名(v1,v2,v3)にnを格納 } v1 # => 1