1

我正在尝试从 R 中的列表创建变量名,但我很挣扎!

我最终想做的是使用以前创建的列表来创建多元线性回归的公式,由此列表中的每个值将标识回归公式的解释变量之一。

我从 x 个可变长度列表(GoodModels_LMi,其中 i 从 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() 来实现这一点,但是,我不确定如何创建公式的第二部分。

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

我知道下面的内容是不正确的,但与我来的一样接近:

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

我也研究了 assign(),但没有成功,因为 value 参数与 x 参数相同。

非常感谢您对此的任何帮助!

奥利维亚

4

1 回答 1

2

您的公式应该包含 column names,而不是实际数据。这是一个使用iris.

想象一下,您想使用来自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 回答