【发布时间】:2010-11-17 08:36:06
【问题描述】:
意识到循环在 R 中通常并不理想,有时它们是必要的。
写大循环时,不
for (i in 1:large_number)
浪费内存,因为必须创建大小为 large_number 的向量?
这会使 while 循环成为大型必要循环的最佳选择吗?
【问题讨论】:
标签: r loops for-loop while-loop
意识到循环在 R 中通常并不理想,有时它们是必要的。
写大循环时,不
for (i in 1:large_number)
浪费内存,因为必须创建大小为 large_number 的向量?
这会使 while 循环成为大型必要循环的最佳选择吗?
【问题讨论】:
标签: r loops for-loop while-loop
首先,很多“循环不好”的讨论源于黑暗时代,当时循环实际上实现效率较低,尤其是在某些版本的 S-Plus 中。
也就是说,虽然您关于需要大型索引对象的评论是正确的,但您也可以使用
apply 系列中的函数,例如 sapply、lapply 或 tapply,用于展开您的结构
相对较新的iterators 包也避免了您提到的作为内存限制的大向量
Ra 'accelerated R' variant and its jit package 可以显着加速简单循环。
作为额外的好处,选项 1 和 2 提供了在合适的系统上使用 CRAN 包 snow、multicore 或 NWS 中的工具并行执行循环的路径,仅举几例。
【讨论】: