[R] Have a function like the "_n_" in R ? (Automatic count function )
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Wed Feb 25 17:03:38 CET 2009
hadley wickham wrote:
> On Wed, Feb 25, 2009 at 8:41 AM, Wacek Kusnierczyk
> <Waclaw.Marcin.Kusnierczyk at idi.ntnu.no> wrote:
>
>> hadley wickham wrote:
>>
>>> And for completeness here's a function that returns the next integer
>>> on each call.
>>>
>>> n <- (function(){
>>> i <- 0
>>> function() {
>>> i <<- i + 1
>>> i
>>> }
>>> })()
>>>
>>>
>> actually, you do not need the external function to have the functionality:
>>
>> n = local({
>> i = 0
>> function() (i <<- i + 1)[1] })
>>
>> n()
>> # 1
>> n()
>> # 2
>>
>
> Yes, I'm just using the function as a way of creating an environment.
> The function method is a little more flexible if you want multiple
> independent counters though.
>
not as it stands above, because you immediately apply your function and
lose grip of it -- so it's just as do-once a solution as that with
local. but clearly, to have multiple independent counters, you'd need
two nested functions, as in this generalized version:
make.counter =
function(value)
function(increment)
(value <<- value + increment)[1]
counters =
lapply(rep(0, 3), make.counter)
mapply(
function(counter, increment)
counter(increment),
counters, 1)
# 1 1 1
which is what you presumably had in mind, roughly.
vQ
More information about the R-help
mailing list