Hi David, that's a great answer, thanks so much. I imagined apply() was involved in the solution, but I was unable to find how myself. Thanks again. Matteo
On 17 December 2015 at 01:37, David Winsemius <dwinsem...@comcast.net> wrote: > > > On Dec 16, 2015, at 5:34 PM, David Winsemius <dwinsem...@comcast.net> > wrote: > > > > > >> On Dec 16, 2015, at 4:18 PM, Matteo Richiardi < > matteo.richia...@gmail.com> wrote: > >> > >> I have to evolve each element of a matrix W > >> > >> W <- matrix(0,2,3) > >> > >> according to some function which uses the indices of the matrix [i,j] as > >> arguments: > >> w.fun = function(i,j) { > >> return A[i]*B[j]/(C[i,j]) > >> } > >> > >> where > >> A<-c(100,100) > >> B<-c(200,200,200) > >> C <- matrix( rnorm(6,mean=0,sd=1), 2, 3) > >> > >> How can I do it, without recurring to a loop? Also, in my application I > >> need to pass the function another argument. > > > > mapply( function( i,j,fac) {fac*A[i]*B[j]/C[i,j]}, > > i=row(W), > > j=col(W), > > MoreArgs=list(fac=10) ) > > [1] -86207.97 325768.16 -135764.41 -913036.95 -142509.39 > > [6] 243715.67 > > > > > > N.B. all of the *apply functions are really loops. > > Furthermore, you can neatly populate the W matrix with the `[<-` function: > > W[] <- mapply( function( i,j,fac) {fac*A[i]*B[j]/C[i,j]}, > i=row(W), j=col(W),MoreArgs=list(fac=10) ) > > > W > [,1] [,2] [,3] > [1,] -86207.97 -135764.4 -142509.4 > [2,] 325768.16 -913037.0 243715.7 > > > > > > > -- > > David. > >> > >> Thanks a lot for your suggestions. > >> Matteo > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> 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. > > > > David Winsemius > > Alameda, CA, USA > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > David Winsemius > Alameda, CA, USA > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.