2016-10-07 4 views
4

나는 R에서 재귀 함수를 가지고있다. 나는 그것을 추적하고 함수가 프로 시저 동안 얼마나 자주 호출되는지 알고 싶다. R에서 어떻게 할 수 있습니까?R에서 재귀 함수를 계속 유지하려면?

EDIT : 시료 번호 :

test <- function(num) 
{ 
    if(num>100) 
    return(num) 
    num <- num+4 
    res <- test(num) 
    return(res) 
} 
+1

Rcpp는 재귀에 특히 적합합니다. R, 정말 그걸 빨아 들인다. –

답변

4

세계를 필요로 <<-가없는 또 다른 방법 :

test <- function(num, count=0) { 
    if(num > 100) 
    return(list(res=num, count=count)) 
    num <- num+4 
    res <- test(num, count+1) 
    return(res) 
} 

주 그 호출에 대한 서명 test은 같습니다.

test(1) 
##$res 
##[1] 101 
## 
##$count 
##[1] 25 
5

재귀 함수 후이를 색인을 <<- 연산자를 사용하여 전역 변수를 생성한다. 다음

counter <<- 0 

는 함수에 그 재귀 적으로 간단하게 사용됩니다

counter <<- counter +1 
+1

전역 범위의 변수에 할당하는 것은 좋은 방법은 아닙니다. 함수가 범위를 사용자 정의하면이 또한 중단됩니다. – smci

+1

예, 동의했습니다. @aichao는보다 세련된 솔루션을 제공합니다. 글로벌 부작용은 일반적으로 매우 나쁜 생각입니다. –

관련 문제