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