Also A %*% t(B) / C
Which works because when a vector is converted to a matrix, it becomes a 1-column matrix. The documentation for t() points this out but there is a typo: "When x is a vector, it is treated as a column, i.e., the result is a 1-row matrix." Should be a "1-column matrix" > as.matrix(A) [,1] [1,] 100 [2,] 200 ------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Jeff Newmiller Sent: Wednesday, December 16, 2015 7:01 PM To: Matteo Richiardi; r-help@r-project.org Subject: Re: [R] Applying a function to a matrix using indexes as arguments Would outer( A, B, `*` ) / C do the trick for you? -- Sent from my phone. Please excuse my brevity. On December 16, 2015 4:41:13 PM PST, Matteo Richiardi <matteo.richia...@gmail.com> wrote: >My problem is of course more complicated, and is obviously not a >homework. >I just wanted to provide a minimal working example. You can replace the >matrix C with a matrix containing any number, for what matters. Btw, >because numbers are extracted from a Gaussian distribution, the >likelihood >that you draw a 0 is actually zero. > >Apart from this, apologies for having posted an html version. > >On 17 December 2015 at 00:36, Jeff Newmiller <jdnew...@dcn.davis.ca.us> >wrote: > >> This calculation divides by values centered around zero. The only >context >> that I can think of that would require such silliness is a homework >> problem, and this list has a no-homework policy. If not, then >mentioning >> the theory you are applying might help someone point you at an >existing >> function that achieves your goals while avoiding divide-by-zero >errors. >> >> Since you also posted in HTML I gather that you have not read the >Posting >> Guide mentioned below. Avoiding HTML on this list is to your benefit, >since >> using it inevitably leads to others seeing a garbled version of what >you >> sent. Please read the PG for more important guidance. >> -- >> Sent from my phone. Please excuse my brevity. >> >> On December 16, 2015 4:18:56 PM PST, 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. >>> >>> 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. >>> >>> [[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. ______________________________________________ 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.