Or even easier is you use lmList() from the nlme package library(nlme) data(iris) regression.list <- lmList(Sepal.Width ~ Petal.Width | Species, data = iris) summary(regression.list) coef(regression.list)
Best regards, Thierry ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2015-02-16 16:17 GMT+01:00 David L Carlson <dcarl...@tamu.edu>: > Or for the slopes and t-values: > > > do.call(rbind, lapply(mod, function(x) summary(x)[["coefficients"]][2,])) > Estimate Std. Error t value Pr(>|t|) > setosa 0.8371922 0.5049134 1.658091 1.038211e-01 > versicolor 1.0536478 0.1712595 6.152348 1.466661e-07 > virginica 0.6314052 0.1428938 4.418702 5.647610e-05 > > David C > > -----Original Message----- > From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of David L > Carlson > Sent: Monday, February 16, 2015 8:52 AM > To: Ronald Kölpin; r-help@r-project.org > Subject: Re: [R] Loop over regression results > > In R you would want to combine the results into a list. This could be done > when you create the regressions or afterwards. To repeat your example using > a list: > > data(iris) > taxon <- levels(iris$Species) > mod <- lapply(taxon, function (x) lm(Sepal.Width ~ Petal.Width, > data=iris, subset=Species==x)) > names(mod) <- taxon > lapply(mod, summary) > coeffs <- do.call(rbind, lapply(mod, coef, "[1")) > coeffs > # (Intercept) Petal.Width > # setosa 3.222051 0.8371922 > # versicolor 1.372863 1.0536478 > # virginica 1.694773 0.6314052 > > ------------------------------------- > David L Carlson > Department of Anthropology > Texas A&M University > College Station, TX 77840-4352 > > > > > -----Original Message----- > From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Ronald > Kölpin > Sent: Monday, February 16, 2015 7:37 AM > To: r-help@r-project.org > Subject: [R] Loop over regression results > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Dear all, > > I have a problem when trying to present the results of several > regression. Say I have run several regressions on a dataset and saved > the different results (as in the mini example below). I then want to > loop over the regression results in order so save certain values to a > matrix (in order to put them into a paper or presentation). > > Aside from the question of how to access certain information stored by > lm() (or printed by summary()) I can't seem to so loop over lm() > objects -- no matter whether they are stored in a vector or a list. > They are always evaluated immediately when called. I tried quote() or > substitute() but that didn't work either as "Objects of type 'symbol' > cannot be indexed." > > In Stata I would simply do something like > > forvalues k = 1/3 { > quietly estimates restore mod`k' > // [...] > } > > and I am looking for the R equivalent of that syntax. > > Kind regard and thanks > > RK > > > attach(iris) > mod1 <- lm(Sepal.Width ~ Petal.Width, data=iris, subset=Species=="setosa") > mod2 <- lm(Sepal.Width ~ Petal.Width, data=iris, > subset=Species=="versicolor") > mod3 <- lm(Sepal.Width ~ Petal.Width, data=iris, > subset=Species=="virginica") > > summary(mod1); summary(mod2); summary(mod3) > > mat <- matrix(data=NA, nrow=3, ncol=5, > dimnames=list(1:3, c("Model", "Intercept", "p(T > |T|)", > "Slope", "R^2"))) > > mods <- c(mod1, mod2, mod3) > > for(k in 1:3) > { > mod <- mods[k] > mat[2,k] <- as.numeric(coef(mod))[1] > mat[3,k] <- as.numeric(coef(mod))[1] > } > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1 > > iQEcBAEBAgAGBQJU4fJnAAoJEKdHe5EUSrVeafwIALerOj+rsZTnbSKOUX6vYpr4 > Uqsx0X2g+IgJw0KLdyqnlDmOut4wW6sWExtVgiugo/bkN8g5rDotGAl06d0UYRQV > 17aLQqQjI6EGXKV9swwlm2DBphtXCIYUCXnDWUoG4Y2wC/4hDnaLbZ9yJFF1GSjn > +aN/PFf1mPPZLvF1NgMmzLdszP76VYzEgcOcEUfbmB7RU/2WEBLeBYJ8+FD1utPJ > cnh03rSc/0dgvphP8FO47Nj7mbqqhKL76a9oQqJSJiZJoCFCGiDIIgzq7vwGWc4T > 9apwC/R3ahciB18yYOSMq7ZkVdQ+OpsqDTodnnIIUZjrVIcn9AI+GE0eq1VdLSE= > =x+gM > -----END PGP SIGNATURE----- > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.