質問: R初心者で申し訳ございません。 重回帰分析の結果、例えば、、、 ``` result <- step(reg0,direction="both", scope=list(upper=~○+○+... ``` の`result`を `result1 result2 result3...result10` といったように、最後に123...10というような変数を付けておいて あとからループで呼び出したいと思っています。 ところが、例えば ``` t<-1 sprintf("result%s",t,sep="") ``` としても、`"result1"`は文字列になるだけで、回帰結果を呼び出すことは出来ません。 1~10までの変数を投げて回帰結果を呼び出したいのですが どうしたらいいのでしょうか。 また、一度計算した回帰結果を、Rを一度落として再度立ち上げた後に 呼び出したいのですが、 回帰結果を保存する方法はないのでしょうか。 お恥ずかしい質問ばかりで恐れ入りますが、教えて頂けないでしょうか。
回答: kcrt さんの回答にある様に、予め解析結果を配列やリストに入れておく方が良いのですが、参考までに変数名(文字列)から変数(オブジェクト)の値を取り出す方法を記載しておきます。 ``` result_set <- lapply(paste("result", 1:10, sep=""), function(x){if(exists(x)){eval(as.name(x))}}) ``` `as.name()` で文字列を変数シンボルに変換して `eval` しています。`lapply` を使っていますので戻り値はリストになります。また、変数が存在しない場合は `NULL` が返ります。例えば変数 `result2` が定義されていない場合は以下の様になります。 ``` > result_set[[2]] NULL ```