本文介绍了从简单线性回归打印和导出循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我进行了一次循环,在数据集中执行了许多简单的线性回归。但是,我只想打印满足特定阈值的结果(即:R平方和p值分别为30%和5%)。然后我还想保存列表并将其导出为CSV文件。但是,它只保存循环的第一个结果。并不是所有的名单,但实际上有大约14个达到了门槛。我的代码有问题吗?
predictorlist = colnames(finalmev)[-1]
sink('mev.txt')
for (i in predictorlist){
model <- summary(lm(paste("ODR ~", i[[1]]), data=finalmev))
if (model$r.squared > 0.30 && model$coefficients[2,4] < 0.05){
print(data.frame(MEV = i[[1]], Rsquared = model$r.squared,
pvalue = model$coefficients[2,4]))
sink()
}
}
推荐答案
使用lapply
,以mtcars
为例-
predictorlist = colnames(mtcars)[-1]
do.call(rbind, lapply(predictorlist, function(x) {
model <- summary(lm(paste("mpg ~", x), data=mtcars))
rsq = model$r.squared
pval = model$coefficients[2,4]
if (rsq > 0.30 && pval < 0.05)
data.frame(MEV = x, Rsquared = rsq, pvalue = pval)
})) -> res
write.csv(res, 'mev.csv', row.names = FALSE)
#If you want to write it as text file
#write.table(res, 'mev.txt')
这篇关于从简单线性回归打印和导出循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!