r - Calling functions from a list recursively -
i writing program in need function call function determined in period beforehand, may again call function determined before , on. however, finding myself inable implement in r.
here minimal example of trying do:
functions <- list() functions[[1]] <- function(x){ x } (i in 2:10) { functions[[i]] <- function(x){ functions[[i-1]](x) + x } } so after running script, want happen when call functions[[10]](1) r determines value function have had in period 9, needs value of function in period 8 , on , adds input it. (so obviously, output should 10).
the problem when this, function calls infinitely. list looks this:
[[1]] function (x) { x } [[2]] function (x) { functions[[i - 1]](x) + x } [[3]] function (x) { functions[[i - 1]](x) + x } (...) so when call functions[[10]](x), evaluates functions[[9]](x) + x, functions[[9]] keeps calling on , on again.
is there can force r write value of i - 1 each element of list, such follows?
[[1]] function (x) { x } [[2]] function (x) { functions[[1]](x) + x } [[3]] function (x) { functions[[2]](x) + x } (...) or there other way trying here?
(obviously, in above given example, sum, in application trying simulate here, not possible , can't think of way other having each function call 1 before it).
here go
functions <- list() functions[[1]] <- function(x){ x } (i in 2:10) { functions[[i]] <- function(x,i){ functions[[i-1]](x) + x } formals(functions[[i]])$i <- } functions[[10]](5) # 50
Comments
Post a Comment