> 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. -- 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.