计算函数调用次数(非显式)

3
我需要计算函数调用次数并在函数内部使用,但不能显式计算。例如:
```html

我需要计算函数调用次数并在函数内部使用,但不能显式计算。例如:

```
f <- function(i,ncall) {
 print(paste("call to function number", ncall))
 i = i^2
 return(i)  
}

print(f(3,ncall=1))
print(f(4,ncall=2))

我想做同样的事情,但不想每次在f(a,N)中提供ncall=N。这没有宇宙目的,只是想知道是否可能。谢谢!

2个回答

9
你可以设置函数拥有自己的封闭环境:
f <- local({
    n <- 0
    function(i, reset=FALSE)
    {
        n <<- if(reset) 0 else n + 1
        print(paste("call to function number", n))
        i^2
    }
})

f(3)
# [1] "call to function number 1"
# [1] 9
f(4)
# [1] "call to function number 2"
# [1] 16

最佳答案是这个问题的一种方法。 - Colonel Beauvel

3
这样更好吗?
ncall <- 1
f <- function(i) {
  print(paste("call to function number", ncall))
  i <- i^2
  ncall <<- ncall + 1
  i  
}

f(3)
# [1] "call to function number 1"
# [1] 9
f(4)
# [1] "call to function number 2"
# [1] 16

哦!多么简单。谢谢! - Alexey Ferapontov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接