[R] regression with ordered arguments
Petr PIKAL
petr.pikal at precheza.cz
Tue Sep 27 14:20:33 CEST 2011
Hi Francesco
> Dear Petr,
>
> thank you so much for your quick reply. I was sure that there were some
> smart ways to address my issue. I went through it and took some time to
> look at the help for lapply and mapply.
> However, some doubts still remain. Following your example, I did:
> lll <-vector(mode = "list", length = 3)
> mmm <-vector(mode = "list", length = 3)
>
> yyy <- lapply(lll, function(x) runif(100, min =0, max = 1))
> xxx <- lapply(mmm, function(x) runif(100, min =0, max = 1))
>
> but then I get stucking again. It's not clear to me how to pass a lm
> command to mapply. I tried to give a look at lapply and sapply, but I
did
> not manage to go much further.
> It would be of big help if you could give me some more hints on this or
if
> you could provide me with some references. I am sorry, but I find the
help
> files quite cryptic. Is there a manual or some other source that you
would
> advice me where I could find some more example on how to deal with
similar issues?
You can use for cycle
for (i in 1:3) lll[[i]] <-lm(yyy[[i]]~xxx[[i]])
put result of lm to list object lll then
lapply(lll, summary)
gives you summary of each lm function, if you want to use mapply
mmm<-mapply(function(x,y) lm(y~x), xxx, yyy, SIMPLIFY=F)
you can see structure of any object by
str(mmm)
Both results shall be similar, for this case I believe that for loop is
easier to understand.
Regards
Petr
>
> Thank you very much for your precious support,
> f.
>
> On 27 September 2011 10:08, Petr PIKAL <petr.pikal at precheza.cz> wrote:
> Hi
>
> > Dear R listers,
> >
> > I am trying to be a new R user, but life is not that easy.
> > My problem is the following one: let's assume to have 3 outcome
> variables
> > (y1, y2, y3) and 3 explanatory ones (x1, x2, x3).
> > How can I run the following three separate regressions without having
to
> > repeat the lm command three times?
> >
> > fit.1 <- lm(y1 ~ x1)
> > fit.2 <- lm(y2 ~ x2)
> > fit.3 <- lm(y3 ~ x3)
> >
> >
> > Both the y and x variables have been generated extracting random
numbers
> > from uniform distributions using a command such as:
> >
> > y1 <- runif(100, min = 0, max = 1)
> >
> > I went to several introductory manuals, the manual R for stata users,
> > econometrics in R, Introductory statistics with R and several blogs
and
> help
> > files, but I didn't find an answer to my question.
> > can you please help me? In Stata I wouldn't have any problem in
running
> > this as a loop, but I really can't figure out how to do that with R.
> You can construct loop with naming through paste, numbers and get in R
too
> but you will find your life much easier to use R powerfull list
> operations.
>
> Insted of
>
> y1 <- runif(100, min = 0, max = 1)
> ...
>
> lll <- vector(mode="list", length=3)
> lll <- lapply(1, function(x) runif(100, min = 0, max = 1))
>
> you can use probably mapply for doing your regression.
> Or you can easily access part of the list by loop
>
> for (i in 1:3) lm(lll[[i]]~xx[[i]])
>
> (if you have your x's in list xx)
>
> Regards
> Petr
>
> > Thanks in advance for all your help.
> > Best,
> > f.
> >
> > [[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