【发布时间】:2013-12-12 19:41:21
【问题描述】:
我有一个名为“marketdata”的数据框,其中包含 3,000,000 行(行名:1 到 3,000,000)和 2 列(列名:“mid”、“bo”)。
> head(marketdata)
mid bo
1 250 0.05
2 251 0.07
3 252 0.13
4 249 0.08
5 250 0.12
我的功能如下:
movingWindow <- function (submarketdata) {
temp <- submarketdata[submarketdata$bo <= 0.1, ]
return( c(mean(temp$mid), NROW(temp)/100) )
}
result <- lapply(c(101:NROW(marketdata)), function(i) movingWindow( marketdata[ (i-99):i , ] ))
例如,对于第 101 行,我将搜索 marketdata[2:101,]。然后找出那些“bo”值
但是,此脚本运行速度非常慢。完成所有 3,000,000 行大约需要 15 分钟。任何人都可以帮我加快速度吗?谢谢。
【问题讨论】:
-
您需要提供
marketdata的代表性样本。请阅读此FAQ。 -
嗯,你正在实现大约。每秒 3333 次输出。不需要您的
movingWindow函数,因为它的每个输出都很容易矢量化。
标签: r optimization lapply