从我的理解,你想写一个循环,允许你使用lm
与不同的公式。 lm
的好处在于它可以将类formula
的对象作为第一个参数。让我们看看它是如何工作的。
# Create a data set
df <- data.frame(col1=(1:10+rnorm(10)), col2 = 1:10, col3 = rnorm(10), col4 = rnorm(10))
如果我们想在col1
的依赖性和col2
作为自变量运行lm
,那么我们就可以做到这一点:
model_a <- lm(col1 ~ col2, data = df)
form_b <- as.formula("col1 ~ col2")
model_b <- lm(form_b, data = df)
all.equal(model_a,model_b)
# [1] "Component “call”: target, current do not match when deparsed"
所以这两款车型之间的差异的唯一的事情就是函数调用是不同的(在model_b
我们使用form_b
,而不是col1 ~ col2
)。除此之外,模型是相同的。
所以,现在你知道如何使用formula
类来运行lm
。您可以轻松地构建公式与paste
,通过设置collapse
到+
ind_vars <- paste(names(df)[-1],collapse = " + ")
form_lm <- paste(names(df)[1], "~", ind_vars)
form_lm
# [1] "col1 ~ col2 + col3 + col4"
如果我们想要三种不同的模式,我们可以做一些事情,例如:
lis <- list()
for (i in 2:length(names(df))) {
ind_vars <- paste(names(df)[2:i], collapse="+")
form_lm <- paste(names(df)[1], "~", ind_vars)
lis[[i-1]] <- lm(form_lm,data=df)
}
相反T1 + T2的'+ ..'你可以使用'lm(t121〜。,mydata)'最好显示一个小的可重复的例子。 – akrun
请告诉我清楚我没有得到 – Aarthika
也许'lapply(121:ncol(mydata),function(i)lm(mydata [[1]]〜。,mydata [c(i,seq(i-1)) ]))' – akrun