从简单线性回归打印和导出循环
Print and export loop from simple linear regression
我做了一个循环来在数据集中执行许多简单的线性回归。但是,我只想打印满足特定阈值的结果(即:R 平方 > 30% 和 p 值 < 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')
我做了一个循环来在数据集中执行许多简单的线性回归。但是,我只想打印满足特定阈值的结果(即:R 平方 > 30% 和 p 值 < 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')