2017-01-31 10 views
1

複数の線形回帰を実行しており、モデルで使用したい変数をループしています。私はRからの出力を提示したい、そして私は変数の名前をlmの要約に表示したい。変数名を節約するためにlm内のペーストを使用する

私が持っている場合:私は知っている

var1 <- "nice_name_var1" 
var2 <- "nice_name_var2" 
depvar <- "nice_name_dep_var" 

は、私はこれを行うことができない私のデータフレームにmy.df

存在している:

lm(paste(depvar,sep="") ~ paste(var1,sep="") + paste(var2,sep=""), 
data=my.df) 

私はこれを行うことができることを知っており、これは動作しますが、summaryの出力には、必要な変数の名前がありません。

lm(my.df[,paste(depvar,sep="")] ~ my.df[,paste(var1,sep="")] + my.df[,paste(var2,sep="")]) 
data=my.df) 
+2

'broom'パッケージが役に立たないかもしれません...つまり' tidy(summary(lm(.....))) ' – Sotos

+0

申し訳ありませんが、私が意味するのは' summary'を使うと係数の名前を取得します。後者の場合、係数の名前はちょうど 'my.df [、paste(depvar、sep =" ")]'です。これは私が望むものではありません。 – GabrielMontenegro

+2

ちょうど 'tidy'をチェックしました。データフレームが得られたので、今度は行/列の名前を変更できます。ありがとう! – GabrielMontenegro

答えて

1

1)を使用してを貼り付ける例としてanscombeデータフレームに内蔵:

depvar <- "y1" 
var1 <- "x1" 
var2 <- "x2" 

fo <- as.formula(paste(depvar, "~", var1, "+", var2)) 
do.call("lm", list(fo, quote(anscombe))) 

変数名x1x2y1表示し、この出力を与える:

Call: 
lm(formula = y1 ~ x1 + x2, data = anscombe) 

Coefficients: 
(Intercept)   x1   x2 
    3.0001  0.5001   NA 

lmは式の代わりに文字列を受け入れますので、as.formulaはhにすると省略できます出力の中にその周りに表示されている引用符。

2)model.frame /用語別のアプローチは、次のとおり同様の出力を与える

mf <- model.frame(anscombe[c(depvar, var1, var2)]) 
do.call("lm", list(terms(mf), quote(anscombe))) 

関連する問題