I wanted to create a list of functions whose output differs depending the value of a variable when the function was created.  Generally this did not work.  Each function was exactly the same, as in the simple example below:

get_data_function <- function(v) {
  function() {
    print(v)
  }
}
data_functions <- sapply(1:10,function(v) get_data_function(v))
(data_functions[[1]])() # prints 10!

However, if I insert a statement in get_data_function to print argument v, then I get the different functions that I wanted:

get_data_function <- function(v) {
  print(v)
   function() {
     print(v)
   }
 }
 data_functions <- sapply(1:10,function(v) get_data_function(v))
 (data_functions[[1]])() # prints 1, as expected!
 
I have two questions about this:
* Is this a bug in R?  
* Is there a more direct way to get the effect of printing v?

Matt


 
---------------------------------
Don't get soaked.  Take a quick peek at the forecast 

	[[alternative HTML version deleted]]

