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

Bert Gunter gunter.berton at gene.com
Mon Jan 29 18:03:44 CET 2007


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
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> 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.
>


-- 
WenSui Liu
A lousy statistician who happens to know a little programming
(http://spaces.msn.com/statcompute/blog)

______________________________________________
R-help at stat.math.ethz.ch mailing list
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.



More information about the R-help mailing list