1

Rのリストから変数名を作成しようとしていますが、苦労しています!

私が最終的にやりたいのは、以前に作成したリストを使用して重回帰の式を作成することです。これにより、リスト内の各値が回帰式の説明変数の1つを識別します。

可変長のxリスト(GoodModels_LMi、1からxになります)から始め、各リストを使用して個別の数式を作成します。

for (i in 1:x){
    lm(formula created from appropriate list)
    i<-i+1
    }

リストは、データマトリックス(AllData)から選択される変数番号に対応しています。したがって、たとえば次の場合:

GoodModels_LM1<-c(2,4,8)

回帰式を次のようにしたいと思います。

AllData[,1]~AllData[,2]+AllData[,4]+AllData[,8]

これを実現するためにas.formula()とpaste()を使用しようとしていますが、数式の2番目の部分を作成する方法がわかりません。

as.formula(paste("AllData[,",i,"]~",paste(?????????)))

私はこれが正しくないことを知っていますが、私が来たのと同じくらい近いです:

paste("AllData[,",paste("GoodModels_LM",i,sep=""),"]",collapse="+")

私もassign()を調べましたが、value引数がx引数と同じであったため、成功しませんでした。

これについて助けてくれてありがとう!

オリビア

4

1 に答える 1

2

数式namesには、実際のデータではなく列が含まれている必要があります。を使用した小さなデモを次に示しirisます。

の列 2、4、および 5 を使用して回帰を実行するとしますiris。まず、次を使用して式を作成しpaste()ます。

vars <- c(2, 4, 5)
frm <- paste("Sepal.Length ~ ", paste(names(iris)[vars], collapse=" + "))
frm

"Sepal.Length ~  Sepal.Width + Petal.Width + Species"

したがって、オブジェクトfrmは、に渡すことができる数式を含む文字列ですlm()

lm(frm, iris)
Call:
lm(formula = frm, data = iris)

Coefficients:
      (Intercept)        Sepal.Width        Petal.Width  
           2.5211             0.6982             0.3716  
Speciesversicolor   Speciesvirginica  
           0.9881             1.2376  
于 2013-02-07T12:27:29.640 に答える