[R] calling objects in a foreloop

Benjamin M. Osborne Benjamin.Osborne at uvm.edu
Mon Mar 14 22:00:33 CET 2005


I want to organize outputs from several regressions into a handy table.  When I
try the following, each of my "fit_s" is replaces instead of read.  Is there a
way to read from the regression summaries that does not require writing
separate lines of code for each?
-Ben Osborne

> fit1<-lm(dBA.spp16$sp2.dBA.ha~dBA.spp16$sp1.dBA.ha)
> fit2<-lm(dBA.spp16$sp3.dBA.ha~dBA.spp16$sp1.dBA.ha)
> fit3<-lm(dBA.spp16$sp3.dBA.ha~dBA.spp16$sp2.dBA.ha)
> fit4<-lm(dBA.spp16$sp5.dBA.ha~dBA.spp16$sp4.dBA.ha)
> fit5<-lm(dBA.spp16$sp6.dBA.ha~dBA.spp16$sp4.dBA.ha)
> fit6<-lm(dBA.spp16$sp5.dBA.ha~dBA.spp16$sp6.dBA.ha)
> fit7<-lm(dBA.spp16$sp1.dBA.ha~dBA.spp16$sp4.dBA.ha)
> fit8<-lm(dBA.spp16$sp1.dBA.ha~dBA.spp16$sp5.dBA.ha)
>
> dBA.spp16.fits<-matrix(NA, nrow=8, ncol=5)
> colnames(dBA.spp16.fits)<-c("formula","intercept","slope","R^2","adj.R^2")
>
> for (i in 1:8){
+ dBA.spp16.fits[i,1]<-summary(as.name(paste("fit",i,sep="")))$call
+ dBA.spp16.fits[i,2]<-summary(as.name(paste("fit",i,sep="")))$coef[1,1]
+ dBA.spp16.fits[i,3]<-summary(as.name(paste("fit",i,sep="")))$coef[2,1]
+ dBA.spp16.fits[i,4]<-summary(as.name(paste("fit",i,sep="")))$r.squared
+ dBA.spp16.fits[i,5]<-summary(as.name(paste("fit",i,sep="")))$adj.r.squared
+ }
Error in "[<-"(`*tmp*`, i, 1, value = NULL) :
        number of items to replace is not a multiple of replacement length

# Because:
> i<-1
> summary(as.name(paste("fit",i,sep="")))
Length  Class   Mode
     1   name   name
>
-- 
Botany Department
University of Vermont
109 Carrigan Drive
Burlington, VT 05405

benjamin.osborne at uvm.edu
phone: 802-656-0297
fax: 802-656-0440




More information about the R-help mailing list