24463


R初心者で申し訳ございません。

重回帰分析の結果、例えば、、、

[code]

    result <- step(reg0,direction="both",
                   scope=list(upper=~○+○+...
    
[/code]

の`result`を  
`result1 result2 result3…result10`

といったように、最後に123…10というような変数を付けておいて  
あとからループで呼び出したいと思っています。

ところが、例えば

[code]

    t<-1
    sprintf("result%s",t,sep="")
    
[/code]

としても、`"result1"`は文字列になるだけで、回帰結果を呼び出すことは出来ません。

1～10までの変数を投げて回帰結果を呼び出したいのですが  
どうしたらいいのでしょうか。

また、一度計算した回帰結果を、Rを一度落として再度立ち上げた後に  
呼び出したいのですが、  
回帰結果を保存する方法はないのでしょうか。

お恥ずかしい質問ばかりで恐れ入りますが、教えて頂けないでしょうか。


CC BY-SA 3.0
2016-04-29T14:44:21.103
24460
2016-05-10T17:31:43.233
2016-04-29T16:03:40.460
6092
15333
question
r
回帰結果を変数名にして呼び出す方法


連続したデータを保存・参照するには、配列を使用すると便利です。

[code]

    result=array()
    
[/code]

で、resultに配列を構築したあと、

[code]

    result[1] = 1番目の回帰式
    result[2] = 2番目の回帰式
    
[/code]

で、順番に値を設定できます。

データは、

[code]

    for (i in 1:10) {
        print(result[i])
    }
    
[/code]

と行った方法であとから参照することができます。

* * *

結果の保存には、`save`と`load`が使用できます。

[code]

    save(result, file="保存ファイル名")
    
[/code]

で保存が、

[code]

    load("保存ファイル名")
    
[/code]

で読み込みができます。


CC BY-SA 3.0
2016-04-29T15:31:25.063
24463
2016-04-29T15:31:25.063
6092
24460
answer


kcrt
さんの回答にある様に、予め解析結果を配列やリストに入れておく方が良いのですが、参考までに変数名(文字列)から変数(オブジェクト)の値を取り出す方法を記載しておきます。

[code]

    result_set <- lapply(paste("result", 1:10, sep=""),
                         function(x){if(exists(x)){eval(as.name(x))}})
    
[/code]

`as.name()` で文字列を変数シンボルに変換して `eval` しています。`lapply`
を使っていますので戻り値はリストになります。また、変数が存在しない場合は `NULL` が返ります。例えば変数 `result2`
が定義されていない場合は以下の様になります。

[code]

    > result_set[[2]]
    NULL
    
[/code]


CC BY-SA 3.0
2016-04-29T16:55:21.207
24464
2016-04-29T16:55:21.207
24460
answer