[英]creating recursive function in r
set.seed(1)
x <- runif(50, 0, 1)
y <- runif(50, 0, 1)
df<-as.data.frame(cbind(x,y))
vall<-c(rep(0,50))
n<-4
theval <- function(data) {
for (i in n:length(data$x)) {
vall[i] <- 0.4*(data$x[i]/data$y[i]) + vall[i-1]*0.6
}
return(vall)
}
vall <- theval(df)
嗨,我對 R 中的某種遞歸 function 有疑問。
我想推導出一個 function ,其計算如下公式。
z(t) = 0.4* (x(t) / y(t)) + 0.6*z(t-1) 當 t < 3 時 z(t)=0
我的代碼給出了結果,但結果是錯誤的。
[1] 0.00000000 0.00000000 0.00000000 0.54579432 0.03226801 0.34139501 0.33139827 0.06531491 0.30135295
[10] -0.18739884
當我手動計算時,第一個非零答案(第四個)應該是 0.2653642。
你能告訴我我做錯了嗎?
謝謝!
以下 function 計算問題中的公式,但它給出了另一個結果。
theval <- function(data, n) {
z <- numeric(nrow(data))
for (i in n:length(data$x)) {
z[i] <- 0.4*(data$x[i]/data$y[i]) + 0.6*z[i - 1]
}
z
}
set.seed(1)
x <- runif(50, 0, 1)
y <- runif(50, 0, 1)
df <- data.frame(x, y)
z3 <- theval(df, n = 3)
z4 <- theval(df, n = 4)
head(z3)
#[1] 0.0000000 0.0000000 0.5230378 1.7978388 2.2200992 4.9449051
head(z4)
#[1] 0.000000 0.000000 0.000000 1.484016 2.031806 4.831929
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.