我需要计算函数的调用次数并在函数中使用它,但不是显式的。例如。例如:
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)
。这没有宇宙目的,只是想知道它是否可能。谢谢!
答案 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