本文介绍了从简单线性回归打印和导出循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我进行了一次循环,在数据集中执行了许多简单的线性回归。但是,我只想打印满足特定阈值的结果(即: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')

这篇关于从简单线性回归打印和导出循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 19:57