【发布时间】:2018-06-01 20:10:24
【问题描述】:
我目前正在解决一个问题,即我执行多个功能被迭代执行。对于每次迭代,输入取决于前一次运行的结果。目前我使用了一个“for循环”,但是为了加快运行速度,我有兴趣用一个apply函数替换这个循环。
apply 函数通常不会将全局环境参数的更改考虑在内。但是可以直接更改全局变量。因此,下面的代码是相同的。
a <- 1
sapply(seq_len(5), function(x){
a <<- a + 1
})
a <- 1
for(i in seq_len(5)){
a <- a + 1
}
从 for 循环更改为可直接更改全局变量的 apply 函数会导致计算时间减少吗?
【问题讨论】:
-
sapply会比循环快得多,这是一种谬论。您应该尝试优化实际上需要时间的代码,而不是尝试通过更改迭代方式来节省每次迭代 1 微秒。查看“代码分析”(here's a good link to get you started) 以获取有关如何识别代码慢速部分的指导。