2

有没有办法使用 data.frame 的指定列来运行模型(为简单起见,线性模型)?

例如,我希望能够做这样的事情:

set.seed(1)
ET = runif(10, 1,20)
x1 = runif(10, 1,20)
x2 = runif(10, 1,30)
x3 = runif(10, 1,40)

Xdf = data.frame(ET = ET, X1 = x1, X2 =x2, X3 = x3)

lm(ET~Xdf[,c(2,3)], data = Xdf)

线性模型将等于lm(ET~X1 +X2, data = Xdf)

我已经尝试过使用矩阵 - 但在这种情况下它不起作用,因为我最终将根据存储在 data.frame 中的值添加空间相关性,这些值需要由 data = data.frame 调用指定。以及具有某些名称。框架。同样,我需要能够选择数据中的某些列,因为这将循环使用不同的预测变量的多个模型。

任何帮助将不胜感激。谢谢!

4

2 回答 2

1

这是一种(相当丑陋的)使它起作用的方法。

as.formulapaste调用lm. _

我确信有更好的方法可以做到这一点,但这就是我想到的。

# ET ~ X1 + X2
f1 <- as.formula(paste("ET~", paste(names(Xdf)[c(2,3)], 
                                        collapse="+")))
lm(f1, data=Xdf)

您还可以指定各个列,尽管它可能需要更多工作

lm(ET ~ Xdf[,2] + Xdf[,3], data=Xdf)
于 2013-09-26T21:01:53.250 回答
-1

这是一个单行解决方案:

lm(ET~., data = Xdf[c(2,3)])

如果您想包含除一个变量之外的所有变量,例如 X3:

lm(ET~., data = Xdf[-c(4)])
于 2017-08-16T19:11:28.223 回答