2015-01-19 3 views
0

필자의 우도 함수의 경우 분모는 각 관찰 (1 : N)에 대해 재귀 함수 recurseG에 의해 정의됩니다.R : 함수 내의 재귀 함수

함수를 반복하면 모두 괜찮습니다.

내 주 (우도) 함수 안에 프로 시저를 포함하면 상황이 이상해집니다. recurseG에 대한 입력 인 xG가 누락됩니다. 그 문제는 이전에 어떤 아이디어도 보지 못했습니까? 건배.

recurseG <- function(T,S){ # xG externally defined 
    if (S==0) return(1) 
    if (S>T) return(0) 
    else return (Recall(T-1, S) + Recall(T-1, S-1)*xG[T]) 
} 

# define for replication 
N=10; T=3 
x <- matrix(rnorm(N*T),N,T) 
tG <- rep(T,N) 
sG <- sample(rep(0:T,T), N) 

## standalone 

denom <- rep(NA, N) 
for (i in 1:N){ 
    xG <- x[i,] 
    denom[i] <- recurseG(tG[i], sG[i]) 
} 

## inside function 

rm(xG) # will produce "not found" 

fout <- function(x){ 
    denom <- rep(NA, N) 
    for (i in 1:N){ 
    xG <- x[i,] 
    denom[i] <- recurseG(tG[i], sG[i]) 
    } 
    return(denom) 
} 

denom 
fout(x) 

답변

1

이 문제는 재귀와 아무 관련이 없습니다. xG내부에fout 기능을 정의하면됩니다. 그러나 recurseG외부에 정의되어 있습니다.입니다. xG의 가시성은 정의 된 범위로 제한되므로 recurseG에는 표시되지 않습니다.

은 단순히 매개 변수로 recurseGxG을 통과 문제를 해결하려면

recurseG <- function(T, S, xG) { 
    if (S == 0) return(1) 
    if (S > T) return(0) 
    else return(Recall(T - 1, S, xG) + Recall(T - 1, S - 1, xG) * xG[T]) 
} 
+0

해결 도움말 및 설명에 대한 감사합니다. –