R中用于数据框回归循环的代码

3
rm(list=ls())
myData <-read.csv(file="C:/Users/Documents/myfile.csv",header=TRUE, sep=",") 
for(i in names(myData))
{
    colNum <- grep(i,colnames(myData)) ##asigns a value to each column 
    if(is.numeric(myData[3,colNum]))  ##if row 3 is numeric, the entire column is 
   {
        ##print(nxeData[,i])        
        fit <- lm(myData[,i] ~ etch_source_Avg, data=myData) #does a regression for each column in my csv file against my independent variable 'etch'
        rsq <- summary(fit)$r.squared   
   }
}

我正在为多列数据做回归循环,并将它们与一个因变量列进行比较。我已经编写了大部分代码,但现在我不确定如何打印出每个列对于 etch_source_Avg 参数的 R 平方值,同时包括该列的名称。理想情况下,它应该是这样的:

.765 "变量名1"

.436 "变量名2" ...以此类推


1
嗨,Jacob:通常我不会这样做,但是我已经写好了一个关于在数据子集上执行回归的答案,可能对你有帮助,我想确保它能够到达你手中。这里是我的答案代码。如果你恢复了你的问题,我也很乐意发布它,或者如果你愿意的话,我也可以停止打扰你。 - David Robinson
@DavidRobinson 谢谢你的帮助!!我不想违反任何论坛规则,所以我把它删掉了。请随意在链接上发布,并且我很乐意将其选为最佳答案。你一点也没有打扰我 :) - Jacob Odom
1个回答

3

这是您代码的快速重写,应该会给您想要的结果。因为myData应该是数据框(data.frame),所以不必为每一列分配值,您可以通过列名访问每一列。

rm(list=ls())
myData <-read.csv(file="C:/Users/Documents/myfile.csv",header=TRUE, sep=",") 
for(i in names(myData))
{ 
    if(is.numeric(myData[3,i]))  ##if row 3 is numeric, the entire column is 
    {       
       fit <- lm(myData[,i] ~ etch_source_Avg, data=myData) #does a regression for each column in my csv file against my independent variable 'etch'
       rsq <- summary(fit)$r.squared
       writelines(paste(rsq,i,"\n"))
    }
}

希望这能帮到你。

非常感谢!完美的。 - Jacob Odom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接