On May 27, 2011, at 3:34 PM, sunelav wrote:

Hello,

I wrote a function that takes a matrix M and several numeric parameters as arguments. It returns a square matrix (same number of rows than M). I need
to use this function n times (n>1000) with random parameters.

Just one matrix M and many parameters?


I would like to increase the speed

Loops are not necessarily slow in R. Pre-allocation of target object size and proper use of indexing and vectorisation may add considerably to efficient execution. In a task of this size (which I would call "small"), it would appear to be inefficiency in the function that is the root of your problem.

of this computation in order to increase
the size of M  I can use as an input. To do so, I would like to use a
function of the apply family but I am not sure whether it is possible in my
case. Have you got any idea ?

?mapply

mapply("f", p1, p2, p3, moreArgs=list(M=M) )

But no promises about improving on speed versus a loop.


I initially thought I could create a list containing the vectors of the 3 random parameters and run lapply. However, in this case I don't know how to
put M as another argument for the function.

Thank you very much for your help,
Cheers,

Sunelav.

To make things clearer; this is the loop I would like to eliminate

# the function

f=function(M,p1,p2,p3) # A matrix and 3 numeric parameters
{....
return(SM) } # a square matrix


# the Loop

SM=f(M,p1,p2,p3)

for (i in 1:10000)
{ p1=runif(..); p2=runif(..); p3=runif(..)
  SM=SM+f(M,p1,p2,p3) }



View this message in context: 
http://r.789695.n4.nabble.com/Use-apply-on-a-function-with-multiple-argument-including-a-matrix-tp3556193p3556193.html


David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to