0

我有一个名为 z 的向量:

x<-matrix(rep(-0.02,12))
y<-matrix(rep(0.03,12))

a<-rbind(x,y)
z<-cumprod(1+a) #

Z 向量中的初始点和最后一点分别为 0.98 和 1.12。该系列的长度为 24。两者之间的最短距离是以以下增量行驶:

(1.12 - 0.98) / (24-1) = 0.0060355

为了获得系列,我必须将 0.98 添加到 0.0060355 以获得元素 2。要获得元素 3,我必须取元素 2 并添加 0.0060355。如何在 R 中而不是在需要循环和引用前一个元素的循环中最有效地做到这一点?这可能吗?

4

3 回答 3

3

另一种解决方案是创建一个新向量 w 并使用 cumsum 函数:

w <- c(.98, rep(0.0060355,23)
cumsum(w)
于 2013-06-11T14:39:38.020 回答
1

看来您希望新序列中的间隔相等。在这种情况下,我认为您只想使用seq命令

seq(z[1],z[length(z)],(z[length(z)]-z[1])/(length(z)-1))
于 2013-06-11T14:15:41.360 回答
1

与其计算增量,不如seq为您做:

seq(z[1], z[length(z)], length=length(z) )
于 2013-06-11T19:33:26.483 回答