在R中的for循环中定义变量

时间:2016-01-11 09:40:08

标签: r for-loop

我有一系列数字,范围从65到60。在每个步骤中,我们减少1/12

[1] 65.00000 64.91667 64.83333 64.75000 64.66667 64.58333 64.50000 64.41667 64.33333 64.25000 64.16667
[12] 64.08333 64.00000 63.91667 63.83333 63.75000 63.66667 63.58333 63.50000 63.41667 63.33333 63.25000
[23] 63.16667 63.08333 63.00000 62.91667 62.83333 62.75000 62.66667 62.58333 62.50000 62.41667 62.33333
[34] 62.25000 62.16667 62.08333 62.00000 61.91667 61.83333 61.75000 61.66667 61.58333 61.50000 61.41667
[45] 61.33333 61.25000 61.16667 61.08333 61.00000 60.91667 60.83333 60.75000 60.66667 60.58333 60.50000
[56] 60.41667 60.33333 60.25000 60.16667 60.08333 60.00000

对于每一步,我们将计算一个函数。

因此使用以下代码创建for循环:

a <- seq(65, 60, (-1/12))
v <- a*0
w <- a*0
mu10<-0.0067
mu12<-0.5
mu20<-1.03*mu10
mu21<-3
r<-log(1+0.01)
b1<-(-1500)
b2<-25000*0.15*12
c10<-45000*10
c20<-45000*10
h<-1/12

v[1] <- h*(b1+mu10*c10+mu12)
w[1] <- h*(b2+mu20*c20+mu21)
for (t in 2:length(a)){
  v[t] <- v[t-1]+h*(-r*v[t-1]+b1+mu10*(c10-v[t-1])+mu12*(w[t-1]-v[t-1]))
  w[t] <- w[t-1]+h*(-r*w[t-1]+b2+mu20*(c20-w[t-1])+mu21*(v[t-1]-w[t-1]))
}

我们想要做的是通过计算时间特征来计算60岁时的功能值。所以只需计算v[60]w[60] 这段代码我没有问题,它完全按我希望的方式完成。

问题是变量mu10我在上面定义为mu10<-0.0067

然而,它应定义为:mu10(t)= alpha + beta * exp(gamma * t) 其中t应该是来自65.00000 64.91667 64.83333 64.75000......60.00000的序列 我想用mu10(t)替换我的mu10,这是我在这里定义的公式。然后mu10(t)将替换for循环中的mu10。

我希望他们看起来像这样:

v[t] <- v[t-1]+h*(-r*v[t-1]+b1+mu10[t]*(c10-v[t-1])+mu12*(w[t-1]-v[t-1]))
左边的pt应该与mu10(t)中的t相同,也许是显而易见的,但只是想说清楚。

我上下尝试了一下,但感觉不对。我已将参数定义为:

gamma<-0.044
alpha<-(-0.0073)
beta<-0.0009

我只是需要帮助以平滑的方式计算mu10(t),以便它可以包含在for循环中。

0 个答案:

没有答案