gpt4 book ai didi

r - R中嵌套循环的性能缓慢

转载 作者:行者123 更新时间:2023-12-04 01:18:16 25 4
gpt4 key购买 nike

我有一个包含 250 个观测值和 584 列的 xts 系列。我在这个系列中运行了一个嵌套的 for 循环。这种嵌套循环需要太多时间。我试图创建一个可重现的示例。在实际数据集上,嵌套循环花费了太多时间。请建议一些有效的方法来执行相同的嵌套循环

library(PerformanceAnalytics)
library(xts)
library(zoo)
## dataset
bsereturn<-managers
##### calculating bse_lag
bse_lag<-head(bsereturn,-1)

## calculating bse forward
bse_forward<-tail(bsereturn,-1)

## defining look back and skip period
s=12
k=1
## Empty xts to store looping results
XSMOM = bse_lag
XSMOM[1:nrow(XSMOM),1:ncol(XSMOM)] <- NA
# Compute Momentum
system.time(for (i in 1:ncol(bse_lag)){

for (t in (s + 1):nrow(bse_lag)){
XSMOM[t,i] = Return.cumulative(bse_lag[(t-s):(t-1-k),i])

}
})

最佳答案

在我看来,您示例中的结果很奇怪。 1997-01-31 的返回是 1996-01-31 到 1996-11-30 的累计返回。为什么忽略 1996-12-31 的返回值?

无论如何,您都可以使用rollapply 来获得答案。对我而言,您的示例运行速度比 Jerome 回答中的单循环快 4 倍。

# this is what I would do
xsmom <- lag(rollapplyr(1 + bsereturn, 11, prod) - 1)
# this is what you have (lagged 2 periods)
xsmom2 <- lag(rollapplyr(1 + bsereturn, 11, prod) - 1, 2)

关于r - R中嵌套循环的性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62976672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com