我正在尝试从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参数相同。
非常感谢您对此的任何帮助!
奥利维亚
答案 0 :(得分: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