2013-02-07 20 views
1

我想從R中的列表創建變量名,但我掙扎着!從不同的列表創建變量名

我最終想要做的是使用先前創建的列表來創建多重線性迴歸的公式,從而列表中的每個值將標識迴歸公式的解釋變量之一。

我開始於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()並粘貼()來實現這一點,但是,我不知道如何創建我的公式的第二部分。

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

我知道這下面是不正確的,而且是接近我來:

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

我也看着分配(),但都沒有成功爲價值論據是與x參數相同。

非常感謝您的幫助!

奧利維亞

回答

2

您的公式應包含列names,而不是實際的數據。這是一個使用iris的小型演示。

想象一下,您想要使用iris中的第2,4和5列進行迴歸。首先,構造使用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 
+0

感謝您的幫助。我嘗試了這一點,但我仍然有我的公式的第二部分現在是完全空白的問題: frm <-paste(「AllData [,」,我,「[〜」,粘貼(名稱(AllData [ ,粘貼(「GoodModels_LM」,i,sep =「」)],collapse =「+」)) 對於i = 1,返回: [1]「AllData [,1]〜」 – Olivia