[R] Loop with string variable AND customizable "summary" output

Marc Schwartz marc_schwartz at comcast.net
Mon Jan 29 19:24:08 CET 2007


Or, to throw yet another couple of possibilities into the mix:

lapply(split(YourDF, YourDF$country), 
       function(x) summary(lm(y ~ x, data = x))

and:

library(nlme)
summary(lmList(y ~ x | country, YourDF))


See ?split and help(lmList, package = nlme)

HTH,

Marc Schwartz

On Mon, 2007-01-29 at 09:03 -0800, Bert Gunter wrote:
> Prior answers are certainly correct, but this is where lists and lapply
> shine:
> 
> result<-lapply(list(UK,USA),function(z)summary(lm(y~x,data=z)))
> 
> As in (nearly) all else, simplicity is a virtue.
> 
> If you prefer to keep the data sources as a character vector,dataNames,
> 
> result<-lapply(dataNames,function(z)summary(lm(y~x,data=get(z)))) 
> 
> should work. 
> 
> Note: both of these are untested for the general case where they might be
> used within a function and may not find the right z unless you pay attention
> to scope, especially in the get() construction.
> 
> 
> Bert Gunter
> Genentech Nonclinical Statistics
> South San Francisco, CA 94404
> 
> 
> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of C.Rosa at lse.ac.uk
> Sent: Monday, January 29, 2007 8:23 AM
> To: liuwensui at gmail.com; bcarvalh at jhsph.edu; Roger.Bivand at nhh.no
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] Loop with string variable AND customizable "summary" output
> 
> Dear All,
> Thank you very much for your help!
> Carlo
> 
> -----Original Message-----
> From: Wensui Liu [mailto:liuwensui at gmail.com]
> Sent: Mon 29/01/2007 15:39
> To: Rosa,C
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] Loop with string variable AND customizable "summary" output
>  
> Carlo,
> 
> try something like:
> 
> for (i in c("UK","USA"))
> {
> summ<-summary(lm(y ~ x), subset = (country = i))
> assign(paste('output', i, sep = ''), summ);
> }
> 
> (note: it is untested, sorry).
> 
> On 1/29/07, C.Rosa at lse.ac.uk <C.Rosa at lse.ac.uk> wrote:
> > Dear All,
> >
> > I am using R for my research and I have two questions about it:
> >
> > 1) is it possible to create a loop using a string, instead of a numeric
> vector? I have in mind a specific problem:
> >
> > Suppose you have 2 countries: UK, and USA, one dependent (y) and one
> independent variable (y) for each country (vale a dire: yUK, xUK, yUSA,
> xUSA) and you want to run automatically the following regressions:
> >
> >
> >
> > for (i in c("UK","USA"))
> >
> > output{i}<-summary(lm(y{i} ~ x{i}))
> >
> >
> >
> > In other words, at the end I would like to have two objects as output:
> "outputUK" and "outputUSA", which contain respectively the results of the
> first and second regression (yUK on xUK and yUSA on xUSA).
> >
> >
> >
> > 2) in STATA there is a very nice code ("outreg") to display nicely (and as
> the user wants to) your regression results.
> >
> > Is there anything similar in R / R contributed packages? More precisely, I
> am thinking of something that is close in spirit to "summary" but it is also
> customizable. For example, suppose you want different Signif. codes:  0
> '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 or a different format display
> (i.e. without "t value" column) implemented automatically (without manually
> editing it every time).
> >
> > In alternative, if I was able to see it, I could modify the source code of
> the function "summary", but I am not able to see its (line by line) code.
> Any idea?
> >
> > Or may be a customizable regression output already exists?
> >
> > Thanks really a lot!
> >
> > Carlo
> >



More information about the R-help mailing list