我正在尝试加速/矢量化时间序列中的一些计算.我可以在for循环中矢量化计算,这可能取决于早期迭代的结果吗?例如:
z <- c(1,1,0,0,0,0)
zi <- 2:6
for (i in zi) {z[i] <- ifelse (z[i-1]== 1, 1, 0) }
Run Code Online (Sandbox Code Playgroud)
使用前面步骤中更新的z [i]值:
> z
[1] 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
在我的努力中矢量化这个
z <- c(1,1,0,0,0,0)
z[zi] <- ifelse( z[zi-1] == 1, 1, 0)
Run Code Online (Sandbox Code Playgroud)
逐个元素的操作不使用操作中更新的结果:
> z
[1] 1 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
因此,这种向量化操作以"并行"而非迭代方式运行.有没有办法我可以写/向量化这个来获得for循环的结果?
假设我知道每月增长率是 5%,并且我知道 2018 年 1 月的基数是 1000。如何创建一个长度为 12 的向量,它显示 2018 年的每月总数?例如,向量中的前四个元素将是:
c(1000, 1000*1.05, 1000*1.05^2, 1000*1.05^3)
有没有一个功能可以让我轻松地做到这一点?我正在考虑以rep()
某种方式使用该功能。