Skip to content

Execute a function

9 messages · carla moreira, Benno Pütz, Carla Moreira +3 more

#
Hi,

I would like to evaluate a function, with 3 arguments, for instance, 

myfunc<-function(a,b,c) { sqrt(a)-exp(b)+4*c
                                                }

How to execute  myfunc(x,y,z), for all x, all y and all z, where x,y,z are
vectors?

Thank you very much in advance



--
View this message in context: http://r.789695.n4.nabble.com/Execute-a-function-tp4637182.html
Sent from the R help mailing list archive at Nabble.com.
#
You mean executing the function for all combinations of values?
For example, if you have a<-b<-c<-1:2
you would get back the values of

myfunc(1,1,1)
myfunc(1,1,2)
myfunc(1,2,1)
myfunc(1,2,2)
myfunc(2,1,1)
myfunc(2,1,2)
myfunc(2,2,1)
myfunc(2,2,2)

?
On 20.07.2012, at 13:05, carla moreira wrote:

            
#
On 2012-07-20 04:05, carla moreira wrote:
Is this what you have in mind:

   myfunc <- function(a, b, c){ sqrt(a)-exp(b)+4*c }
   myfunc2 <- function(x){
     a <- x[1]
     b <- x[2]
     c <- x[3]
     myfunc(a, b, c)
   }

   x <- c(1, 4, 9)
   y <- 1:2
   z <- c(10, -10, 2, 20)
   d <- expand.grid(x, y, z)
   d$value <- apply(d, 1, myfunc2)

?

Peter Ehlers
#
Inline.

-- Bert
On Fri, Jul 20, 2012 at 6:59 AM, Peter Ehlers <ehlers at ucalgary.ca> wrote:
Peter, what's wrong with
with(d,myfunc(x,y,z))    ??

I realize this depends on the function be vectorizable, but isn't that
the point? It could be orders of magnitude faster than looping via
apply.

-- Bert

  
    
#
Bert,

The only thing wrong is that I'm still 75% asleep! Yikes!!
Thanks for the heads-up.

Carla: See Bert's solution.

Peter Ehlers
On 2012-07-20 07:10, Bert Gunter wrote: