可能重复:
加快 R 中的循环操作
我有几个关于循环的问题。我知道 R 在矢量化计算中工作得更快,我想更改下面的代码以利用这一点。在论坛上查看其他一些答案,sapply 函数似乎能够替换内部 for 循环,但我正在生成一个零向量,因此出现错误。道仍然是 1000,我认为这是造成问题的原因。
我主要关心的是速度,因为我需要围绕整个算法创建一个循环并绘制不同的 V 和 n 大小以进行进一步分析。
谢谢你的帮助
替代循环
tao = 1000
L = (tao - 1)
n = 10
V = 5
I = 10000
V_s = matrix(rnorm(I), I, 1)
V_b = matrix(rnorm(I), I, 1)
signal <- matrix(0, L, 1)
for( j in (n:L)){
sapply(((j-n+1):j),function (tao) signal[j] = signal[j] + abs(V_s[tao] - V_b[tao]))
signal[j] = (signal[j] / (n * V) )
}
原始循环
tao = 1000
L = (tao - 1)
n = 10
V = 5
I = 10000
V_s = matrix(rnorm(I), I, 1)
V_b = matrix(rnorm(I), I, 1)
signal <- matrix(0, L, 1)
for( j in (n:L)){
for( tao in ((j-n+1):j)) {
signal[j] = (signal[j] + abs(V_s[tao] - V_b[tao]))
}
signal[j] = (signal[j] / (n * V) )
}