【发布时间】:2012-02-09 18:47:41
【问题描述】:
我想使用arms() 每次获取一个样本,并在我的函数中创建一个类似以下的循环。它运行得很慢。我怎样才能让它跑得更快?谢谢。
library(HI)
dmat <- matrix(0, nrow=100,ncol=30)
system.time(
for (d in 1:100){
for (j in 1:30){
y <- rep(0, 101)
for (i in 2:100){
y[i] <- arms(0.3, function(x) (3.5+0.000001*d*j*y[i-1])*log(x)-x,
function(x) (x>1e-4)*(x<20), 1)
}
dmat[d, j] <- sum(y)
}
}
)
【问题讨论】:
-
您有三个嵌套的 for 循环。你基本上是在 O(n^3) 中运行。你真的需要它们吗?
-
@simchona 是的。我都需要。
-
尝试stackoverflow.com/a/8474941/636656 获取一些建议
-
看起来你这里的代码只是运行相同的语句 100*30*100 次,每次都覆盖 y。请用显示您正在尝试做什么的代码澄清您的问题。
-
y <- seq(0, 1:100)应该做什么?与y <- 0:1相同。也许你打算y <- numeric(100)??