首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更快地替代函数“rollapply”

更快地替代函数“rollapply”
EN

Stack Overflow用户
提问于 2014-08-24 10:20:12
回答 1查看 2.3K关注 0票数 6

我需要对包含大约7,000行和11,000列的xts数据运行滚动窗口函数。我做了以下工作:

代码语言:javascript
复制
require(PerformanceAnalytics)
ssd60<-rollapply(wddxts,width=60,FUN=function(x) SemiDeviation(x),by.column=TRUE)

我等了12个小时,但计算还没完成。但是,当我尝试使用小数据集时,如下所示:

代码语言:javascript
复制
sample<-wddxts[,1:5]
ssd60<-rollapply(sample,width=60,FUN=function(x) SemiDeviation(x),by.column=TRUE)

计算在60秒内完成。我用英特尔i5-2450M CPU、Windows 7操作系统和12 GB内存在计算机上运行它们。

如果有更快的方法在大型xts数据集上执行上述计算,请给我建议一下好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-24 16:38:34

如果可以的话,把它们转换成动物园的物体。rollapply.zoorollapply.xts更有效(在本例中)。我不知道哪一个更有效):

代码语言:javascript
复制
R> require(PerformanceAnalytics)
R> set.seed(21)
R> x <- .xts(rnorm(7000,0,0.01), 1:7000)
R> system.time({
+   r <- rollapply(x, 60, SemiDeviation, by.column=TRUE, fill=NA)
+ })
   user  system elapsed 
  9.936   0.111  10.075 
R> system.time({
+   z <- rollapplyr(as.zoo(x), 60, SemiDeviation, by.column=TRUE, fill=NA)
+ })
   user  system elapsed 
  1.950   0.010   1.964 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25470659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档