簡體   English   中英

在 r 中創建遞歸 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM