用R规划在for循环中建立线性模型

用R规划在for循环中建立线性模型,r,R,我有一个数据集,我将其称为带有预测变量(如价格)的dataset1。我希望基于数据集中存在的n个其他预测因子得到一个好的价格预测因子。但如果n很大,我无法手动制作和检查所有这些模型,所以我希望使用类似的方法: for (i in names(dataset1)) { model = lm(Price~i, dataset1) # Do stuff here with model, such as analyze R^2 values. } 我认为这是可行的,因为用printi替

我有一个数据集,我将其称为带有预测变量(如价格)的dataset1。我希望基于数据集中存在的n个其他预测因子得到一个好的价格预测因子。但如果n很大,我无法手动制作和检查所有这些模型,所以我希望使用类似的方法:

for (i in names(dataset1)) {
    model = lm(Price~i, dataset1)
    # Do stuff here with model, such as analyze R^2 values.
}
我认为这是可行的,因为用printi替换for循环的内部会得到正确的名称。错误如下:

Error in model.frame.default(formula = Price ~ i, data = dataset1, drop.unused.levels =    TRUE) : 
variable lengths differ (found for 'i')

对于如何处理R读取i变量的问题,有人有什么建议吗?我知道如何使用其他软件解决这个问题,但我想了解R是如何工作的。

目前,您没有在名称之间循环。试一试

for(i in 2:ncol(dataset1)) #assuming Price is column 1
然后参考

Price ~ dataset1[, i]
在你的循环中


但我不确定从统计角度看你的方法

我会选择某种*个人申请:

dat <- data.frame(price=1:10,y=10:1,z=1:10)
sapply(dat[2:3], function(q) coef(summary(lm(dat$price ~ q)))[2])

 y  z 
-1  1 
要获得您提到的r平方值:

sapply(dat[2:3], function(q) summary(lm(dat$price ~ q))$r.squared) 

奇怪的是,为什么你不在一个加法模型中尝试所有的变量,然后用stepAIC或类似的方法从那里裁剪模型?这只是我的一个想法。我当然可以尝试其他方法;我只是想了解这种R循环的诀窍。当我做类似的事情时,我将公式粘贴在一起,然后使用do.call,如下所示:
sapply(dat[2:3], function(q) summary(lm(dat$price ~ q))$r.squared)