例子:
df <- data.frame(A=1:5, B=2:6, C=3:7,D=4:8,E=5:9,F=6:10)
我希望能够使用回归循环lm(y,x)。其中,y代表第1列和第2列,x代表其余的列。
我的想法是:
lmf <- function (y,x) {
f <- lm(y ~ x, data=df)
cbind(summary(f)$r.squared,summary(f)$coefficients)
}
for(y in 1:3)
{
R<- apply(df[,3:6], 2, lmf(y,x)); R
}
错误:在model.frame.default(formula = y〜x,data = df,drop.unused.levels = TRUE)中出现错误:变量长度不同(发现'x')
我给出的示例非常小,但我的数据有50列用于y和300列用于x。
我的要求是相同的:lm(df $1〜df $3,data = df); lm(df $1〜df $4,data = df),[...],lm(df $2〜df $3,data = df)...但以自动方式执行。此外,我想提取结果$coefficients和$r.squared。
lapply(2:6, function(x) lm(df[ , 1] ~ df[, x], data = df ) )
,虽然子集有点棘手(它是一个嵌套列表),但它可以完成任务。 - SabDeM