2017-10-12 109 views
-2

我正在嘗試爲R中的循環代碼編寫此代碼,但會發生此錯誤。從for循環獲取輸出在r

Error in h(i - 1) : could not find function "h" 

我該怎麼辦?

F1<-as.matrix(F_1_) #importing data 
a01=0.1    #importing parameters 
a11=0.1 
b11=0.1 
epsilon=0.5 
a02=0.1 
a12=0.1 
b12=0 
h(0) <- 0.3208 #starting value for h(i) 

for(i in 1:2377) 
{ 
h(i)<- ((a01+a11*h(i-1)*(epsilon^2)*h(i-1)*b11)+F1[,2]*(a02+a12*h(i-1)*(epsilon^2)+h(i-1)*b12)) 
} 
return(h(i))  #getting output from h(i), h(i) depend on h(i-1) and other parameters 
+0

它看起來像你試圖讓'h'作爲結果的向量嗎?如果你是,那麼()是用於子集化矢量的錯誤括號,請使用[]。例如'信件[2]'。最好先分配你的矢量,而不是把你的幻數放在for循環中。 –

+0

非常感謝。我的問題解決了。 – Guilda

回答

0

語法h()假定h是函數。

您可以將h設置爲空列表,初始化它並對其進行迭代。

h <- list() 
h[[1]] <- 0 # or whatever initial value 
for(i in 2:2377) 
{ 
h[[i]]<- ((a01+a11*h[[i-1]]*(epsilon^2)*h[[i-1]]*b11)+F1[,2]*(a02+a12*h[[i-1]]*(epsilon^2)+h[[i-1]]*b12)) 
} 

備選地可以初始化H作爲0矢量和迭代的方式相同。

+0

非常感謝。它解決了。 – Guilda