2017-12-09 24 views
0

私はRに50 lmglmオブジェクトを持っています。summary(lm...)を50回タイプすることなく、それらのすべての要約を得たいと思います。それをすばやく行う方法はありますか?データセットの名前は、lin.mod.t#またはlin.mod.s#({#= 1,2、...、25})のように始まります。私は`Summary`複数のLMオブジェクトとGLMオブジェクト

ls(pattern = "lin.mod") 
objects(pattern = "lin.mod") 

を使用してすべてのモデルを一覧表示することができますしかし、私はlsまたはobjectsを使用しての成果のためにsummaryを実行することはできません。私はsummary(eval(parse(text = ls(pattern = "lin.mod"))))を使用しましたが、これは最初のものだけを実行します。助言がありますか?おそらくlapplyを使用しますか?

+0

どのようにあなたが最初の場所で50個のLMとGLMオブジェクトを取得しましたか?たぶんそこから始まり、なぜ**一つの**オブジェクトを維持するためにリストに保存されないのでしょうか? – Parfait

答えて

0

これはいかがですか?

# 2 sample models 
lin.mod.1 <- lm(mpg ~ wt, data = mtcars); 
lin.mod.2 <- lm(mpg ~ wt, data = mtcars); 

# Get models and store in list 
lst <- lapply(ls(pattern = "lin.mod"), get); 

# Summary of models 
res <- lapply(lst, summary); 

説明:リストlstにおける現在の環境や店舗からのパターン"lin.mod"にマッチgetすべてのモデル。リストresにすべてのモデルのsummaryを格納するには、lapplyを使用してください。

0

あなたは私は2つの機能、evalas.nameを使用しています彼らの両方が同様に振る舞うよう以下のように、あなたが代わりにas.nameのas.symbol選択することができ、これを解決するNSEバージョンを選択できます。

?as.name 

as.nameは、最初に(そうas.characterための方法が使用されていない)文字ベクトル に内部でその引数を強制します。最初の 要素をとり、 ""でなければその名前のシンボルを返します(要素がNA_character_の場合、名前はNAです)。

?eval 

のevalはENVIR で指定された環境でのexprの引数を評価し、計算された値を返します。 envirが指定されていない場合、 のデフォルトはparent.frame()(evalの呼び出しが であった環境)です。

lin.mod.1 <- lm(mpg ~ wt, data = mtcars) 
lin.mod.2 <- lm(mpg ~ hp, data = mtcars) 
lin.mod.3 <- lm(mpg ~ disp, data = mtcars) 

objects_lms <- ls(pattern ="lin\\.mod") 
vals <- lapply(objects_lms, function(x)eval(as.name(x))) 
lapply(vals, summary) 
+0

'eval(as.name(...))'を 'get'に使う利点はありません。 –

関連する問題