计算要运行的调用次数(未明确)

时间:2015-04-03 17:06:30

标签: r function

我需要计算函数的调用次数并在函数中使用它,但不是显式的。例如。例如:

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))

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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