我是R语言的新手,因为你很可能会注意到我在C语言方面有一些经验。我正在努力让我的程序运行得更快,从而提高效率。
下面的代码只是从数据集计算一个简单的移动平均值:
library(quantmod)
StockData1 <- getSymbols("AAPL", auto.assign=FALSE, from="1984-01-01")
据我所知,没有快速的预制功能可以为我做,所以我自己制作。
moving_avg <- function(StockData, MA, CurrentDay){
#MA = Days long the MA is
#CurrentDay = What day we are currently on
MAValue <- NULL
n <- 0
total <- 0
start <- CurrentDay - MA
repeat {
total <- total + StockData[[start, 4]]
start <- start + 1
n <- n + 1
if(n == MA){
break
}
}
MAValue <- total/MA
return(MAValue)
}
我使用microbenchmark测试了它:
library(microbenchmark)
microbenchmark(print(moving_avg(StockData1, 256, 300)))
我的结果大约是1000微秒,我觉得这个简单的功能很慢。