upman
upman

Reputation: 43

Using a function as an argument of another function and execute it in each loop

I have several functions in R that get me vectors with different random results, let's call these functions r1, r2, r3 and r4.

Now I want to write another function named 'simulation' that simulates one of these functions above and evaluates different values like the expected value etc. Furthermore, I want only one function that can simulate either r1, r2, r3 or r4, which is possible, because they all put out the same type of vector.

I have tried it by the following way:

simulation <- function(f, n) {
  result <- 0
  for (i in 1:n) {
    result <- result + f[1]
  }
  result
}

Then I execute it like this: simulation(r1(), 500)

This works fine, but the problem is that the function r1() just runs once, but as I want to simulate it n times, I want it to run each time I go through the for-loop.

Is there any way I can do this?

Thanks in advance!

Upvotes: 0

Views: 46

Answers (1)

HubertL
HubertL

Reputation: 19544

You can pass the function itself instead of its return value :

simulation(r1, 500)

But then you have to modify the code :

result <- result + f()[1]

Upvotes: 3

Related Questions