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]]
______________________________________________
[email protected] 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.