对于我的似然函数,分母由每个观察的递归函数recurseG
定义(1:N)。
如果我循环遍历该功能,那么每一件事都可以。
当我将程序嵌入到我的主(可能性)函数中时,事情变得奇怪了。 xG,即recurseG的输入,丢失了。从来没有见过,任何想法是什么问题?欢呼声。
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)
答案 0 :(得分:1)
问题与递归无关。您只需在<{1}}函数中定义<{1}} 。但是,xG
在外面定义。 fout
的可见性受限于其定义的范围,因此在recurseG
中不可见。
要解决此问题,只需将xG
传递给recurseG
作为参数:
xG