Re: [R] Assignments inside lapply

From: ONKELINX, Thierry <Thierry.ONKELINX_at_inbo.be>
Date: Wed, 27 Apr 2011 10:35:56 +0000

Here is a solution with lapply

PowerMatrix <- matrix(unlist(lapply(seq_len(dimx*dimy), function(x){
	i <- 1 + (x - 1) %% dimx
	j <- 1 + (x - 1) %/% dimy
	Pr(c(i,j),c(PRX,PRY),f)

})), nrow = dimx)

A reproducible example

dimx <- 5
dimy <- 6

PowerMatrix <- matrix(unlist(lapply(seq_len(dimx*dimy), function(x){
	i <- 1 + (x - 1) %% dimx
	j <- 1 + (x - 1) %/% dimy
	i * 10 + j

})), nrow = dimx)

Best regards,

Thierry



ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek
team Biometrie & Kwaliteitszorg
Gaverstraat 4
9500 Geraardsbergen
Belgium

Research Institute for Nature and Forest team Biometrics & Quality Assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium

tel. + 32 54/436 185
Thierry.Onkelinx_at_inbo.be
www.inbo.be

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   

> -----Oorspronkelijk bericht-----
> Van: Alaios [mailto:alaios_at_yahoo.com]
> Verzonden: woensdag 27 april 2011 12:14
> Aan: R-help_at_r-project.org; ONKELINX, Thierry
> Onderwerp: RE: [R] Assignments inside lapply
>
> I would like to use lapply as there is a parallel version of
> lapply called mclapply.
>
> My purpose is to convert
> for (i in c(1:dimx)){
> for (j in c(1:dimy)){
> Powermap[i,j] <- Pr(c(i,j),c(PRX,PRY),f) }}
>
> to something that can run in parallel with mclapply:
> I am not sure then how to store the results of
> lapply(mclapply) correctly to Powermap matrix. That is the
> reason I put the assignment inside the return statement.
> For example this does not do what I want to
> Powermap[i,j]<-unlist(mclapply(1:nrow(ij),function(rowId) {
> return (Pr(c(ij$i[rowId],ij$j[rowId]),c(PRX,PRY),f)
> How can I try this out?
>
> Best Regards
> Alex
>
> --- On Wed, 4/27/11, ONKELINX, Thierry
> <Thierry.ONKELINX_at_inbo.be> wrote:
>
> > From: ONKELINX, Thierry <Thierry.ONKELINX_at_inbo.be>
> > Subject: RE: [R] Assignments inside lapply
> > To: "Alaios" <alaios_at_yahoo.com>, "R-help_at_r-project.org"
> > <R-help_at_r-project.org>
> > Date: Wednesday, April 27, 2011, 11:06 AM Dear Alex,
> >
> > I think you want to use apply()
> >
> > ij <- expand.grid(i = seq_len(dimx),j = seq_len(dimy)) Powermap <-
> > apply(ij, 1, function(x){
> >     Pr(x, c(PRX, PRY), f)
> > })
> >
> > Best regards,
> >
> > Thierry
> >
> >
> ----------------------------------------------------------------------
> > ------
> > ir. Thierry Onkelinx
> > Instituut voor natuur- en bosonderzoek team Biometrie &
> Kwaliteitszorg
> > Gaverstraat 4 9500 Geraardsbergen Belgium
> >
> > Research Institute for Nature and Forest team Biometrics & Quality
> > Assurance Gaverstraat 4 9500 Geraardsbergen Belgium
> >
> > tel. + 32 54/436 185
> > Thierry.Onkelinx_at_inbo.be
> > www.inbo.be
> >
> > 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
> >  
> >
> > > -----Oorspronkelijk bericht-----
> > > Van: r-help-bounces_at_r-project.org
> >
> > > [mailto:r-help-bounces_at_r-project.org]
> > Namens Alaios
> > > Verzonden: woensdag 27 april 2011 11:37
> > > Aan: R-help_at_r-project.org
> > > Onderwerp: [R] Assignments inside lapply
> > >
> > > Dear all I would like to ask you if an assignment can
> > be done
> > > inside a lapply statement.
> > >
> > > For example
> > >
> > > I would like to covert a double nested for loop
> > >
> > > for (i in c(1:dimx)){
> > >   for (j in c(1:dimy)){
> > >       Powermap[i,j] <-
> > Pr(c(i,j),c(PRX,PRY),f)
> > >    }
> > > }
> > >
> > > to something like that:
> > >
> > >
> > > ij<-expand.grid(i=seq(1:dimx),j=(1:dimy))
> > >
> > > unlist(lapply(1:nrow(ij),function(rowId) { return
> > >
> > (Powermap[i,j]<-Pr(c(ij$i[rowId],ij$j[rowId]),c(PRX,PRY),f))   }))
> > >
> > >
> > > as you can see lapply does not return nothing as the
> assignment is
> > > done inside the function. Would that
> > work
> > > correctly? What are the cases such a statement will
> > misfunction?
> > >
> > > I would like to thank you in advace for your help.
> > >
> > > Best Regards
> > > Alex
> > >
> > > ______________________________________________
> > > 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.
> > >
>



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. Received on Wed 27 Apr 2011 - 10:46:19 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 27 Apr 2011 - 10:50:33 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive