我有一些名为P_Array
的数组有100,000个数据点,需要计算长度为100的子数据的第一阶自相关,即来自1:100
和2:101
等等。我写的一个工作得很好,但很慢的循环。
Tf <- 100000
acf_Array <- rep(0, length.out = Tf-100)
for (t in 1:(Tf-100)){
acf_Array[t] <- acf(P_Array[t:(t+100)])$acf[2]
}
我的想法是使用像
这样的东西acf_Array[1:(Tf-100)] <- acf(P_Array[(1:(Tf-100)):(101:Tf)])$acf[2]
然而,不起作用。有什么建议吗?
我认为这会解决问题
for (t in 1:(Tf-100)){
acf_Array[t] <- cor(P_Array[t:(t+98)], P_Array[(t+1):(t+99)])
}
答案 0 :(得分:0)
要回答有关矢量化for循环的具体问题,这是我的答案:
acf_Array <- sapply(1:Tf-100, function(x) acf(P_Array[x:x+100])$acf[2])
但正如评论中所提到的,速度限制位可能是acf
函数。