R:我怎么能改变这个循环来申请?

时间:2016-12-23 18:29:47

标签: r loops

我目前正在研究一个R程序,其中有一个程序的一部分在循环中计算两个相互依赖的值。虽然我必须做100,000次迭代才需要很长时间。

所以我想用for循环代替一个apply循环或一些更有效的函数,但我不知道怎么做。有人能帮助我吗?

p <- c()
for(i in 1:n) {
  if(i == 1) {
   x <- b[i]
  }
  else {
    x <- c(x, max(h[i - 1], p[i]))
  }
  h <- c(h, x[i] + y[i])
}

非常感谢!!

1 个答案:

答案 0 :(得分:5)

您似乎没有完整的工作示例,但主要问题是使用x函数构建hc()向量非常慢。预分配它们会更好:

x <- numeric(n)  # allocate vector of size n
h <- numeric(n)

然后通过分配到x[i]h[i]填写它们。例如,以下循环:

x <- c(); for (i in 1:100000) x <- c(x,1)

在我的笔记本电脑上运行大约需要10秒钟,但此版本:

x <- numeric(100000); for (i in 1:100000) x[i] <- 1

在几乎立即跑步时做同样的事情。