首先,我对此很陌生,所以我的方法/想法可能是错误的,我已使用 R 和 R studio 将 xlsx 数据集导入到数据框中。我希望能够循环遍历列名以获取所有具有精确“的变量10”,以便运行简单的线性回归。所以这是我的代码:
indx <- grepl('_10_', colnames(data)) #list returns all of the true values in the data set
col10 <- names(data[indx]) #this gives me the names of the columns I want
这是我的 for 循环,它返回一个错误:
temp <- c()
for(i in 1:length(col10)){
temp = col10[[i]]
lm.test <- lm(Total_Transactions ~ temp[[i]], data = data)
print(temp) #actually prints out the right column names
i + 1
}
是否可以运行一个循环将这些变量放入线性回归模型中?我收到的错误是:“model.frame.default(formula = Total_Transactions ~ temp[[i]],:variable lengths different (found for 'temp[[i]]') 中的错误”。如果有人能指出我在正确的方向上,我将非常感激。谢谢。
好的,我会发布答案。我将使用数据集mtcars
举个例子。我相信它适用于您的数据集。
首先,我创建一个商店,lm.test
,类的对象list
。在您的代码中,您分配的输出lm(.)
每次通过循环,最后你只会得到最后一个,所有其他的都会被新的重写。
然后,在循环内,我使用函数reformulate
将回归公式放在一起。还有其他方法可以做到这一点,但这个方法很简单。
# Use just some columns
data <- mtcars[, c("mpg", "cyl", "disp", "hp", "drat", "wt")]
col10 <- names(data)[-1]
lm.test <- vector("list", length(col10))
for(i in seq_along(col10)){
lm.test[[i]] <- lm(reformulate(col10[i], "mpg"), data = data)
}
lm.test
现在您可以将结果列表用于各种用途。我建议你开始使用lapply
和朋友们。
例如,要提取系数:
cfs <- lapply(lm.test, coef)
为了获得摘要:
smry <- lapply(lm.test, summary)
一旦你熟悉了就变得非常简单*apply
功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)