[R] foreach loop, stata equivalent
Milan Bouchet-Valat
nalimilan at club.fr
Mon Feb 18 17:25:56 CET 2013
Le lundi 18 février 2013 à 17:09 +0100, Jamora, Nelissa a écrit :
> Hi Milan,
>
> Thanks for responding to my question. I'm actually not interested in LM, it
> was more for example.
>
> You are right, I'm trying an enormous set of model runs. My Var1 n=14; Var2
> n=255 ==> 3570!
> But first, I need be able to set up 2 variables in each model run. Those 2
> variables are different in each case. I can set this up 1-by-1 but it will be
> tedious and not efficient.
>
> To describe in more details
> I have a data frame with 269 variables.
> 1. individual columns 1-14 can be my first variable
> 2. individual columns 15-269 can be my second variable.
>
> Variable1 and variable2 are different in each case. For e.g.
> Model 1: var1 and var15
> Model 2: var1 and var16
> Model 3: var1 and var17...
> ....
> Model 3570: var14 and var269
> So I need to write a loop command that calls for different sets of variable1
> and variable2 in each run.
>
> What do I intend to do with this? I'm running threshold vecm (package tsDyn),
> and I need to summarize threshold estimates in each model run (or market
> pairs, var1 and var2). The goal is to extract N=3,570 threshold estimates.
> I did similar linear VECM estimates in Stata using my foreach loop, but now I
> need to make parallel run in R but using threshold model.
Ah, if you need parallelism, you can likely try something like this
(untested) :
# Create cluster cl before and export yourData to them
parLapply(cl, paste0("p", 1:14)), function(var) {
lapply(paste0("p", 15:269), function(y) {
lm(yourData[[var]] ~ yourData[[y]])
})
}
This will only be optimal if you have less than 14 cores.
Regards
> Hope this clears things.
> Nelissa
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: Milan Bouchet-Valat [mailto:nalimilan at club.fr]
> Sent: Monday, February 18, 2013 3:44 PM
> To: Jamora, Nelissa
> Cc: r-help at r-project.org
> Subject: Re: [R] foreach loop, stata equivalent
>
> Le lundi 18 février 2013 à 13:48 +0100, Jamora, Nelissa a écrit :
> > Hi! I'm a recent convert from Stata, so forgive my ignorance.
> >
> >
> >
> > In Stata, I can write foreach loops (example below)
> >
> >
> >
> > foreach var of varlist p1-p14 {
> >
> > foreach y of varlist p15-p269 {
> >
> > reg `var' `y'
> >
> > }
> >
> > }
> >
> >
> >
> > It's looping p1-p15, p1-p16...., p1-p269, p2-p15, p2-p16,... p2-p269,...
> > variable pairs.
> >
> >
> >
> > How can I write something similar in R?
> >
> > I 'tried' understanding the package.foreach but can't get it to work.
> You do not need package foreach, which is intended at a completely different
> problem.
>
> R does not really have the syntactic equivalent of "varlist", but you can
> easily do something like:
> for(var in paste0("p", 1:14)) {
> for(y in paste0("p", 15:269))
> lm(yourData[[var]] ~ yourData[[y]]) }
>
> provided that yourData is the data frame in which the p* variables are
> stored.
>
> There are probably more direct ways of doing the same thing and storing the
> resulting lm objects in a list, but you did not state what you intend to do
> with this enormous set of regressions...
>
>
> Regards
>
> > Thanks for any help
> >
> > Nelissa
> >
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org 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