static variable?
On 4/16/2009 8:46 AM, ivo welch wrote:
dear R experts: does R have "static" variables that are local to functions? I know that they are usually better avoided (although they are better than globals).
You put such things in the environment of the function. If you don't
want them to be globals, then you create the function with a special
environment. There are two common ways to do this: a function that
constructs your function (in which case all locals in the constructor
act like static variables for the constructed function), or using
local() to construct the function.
For example
> makef <- function(x) {
+ count <- 0
+ function(y) {
+ count <<- count + 1
+ cat("Called ", count, "times\n")
+ y + x
+ }
+ }
>
> add3 <- makef(3)
>
> add3(4)
Called 1 times
[1] 7
> add3(6)
Called 2 times
[1] 9
However, I would like to have a function print how often it was invoked when it is invoked, or at least print its name only once to STDOUT when it is invoked many times. possible without <<- ?
That's exactly what <<- is designed for, so you'd have to use some equivalent with assign() to avoid it. Duncan Murdoch