对于R中的大型必要循环,"while循环"是否优先于"for循环"?

Dan*_*ein 6 loops for-loop r while-loop

在R中意识到循环通常不理想,有时它们是必要的.

在写大循环时,没有

for (i in 1:large_number) 
Run Code Online (Sandbox Code Playgroud)

浪费内存,因为必须创建大小为large_number的向量?

这会使while循环成为大型必要循环的最佳选择吗?

Dir*_*tel 12

首先,很多"循环都不好"的喋喋不休源于黑暗时代,当时循环实际上效率较低,特别是在某些版本的S-Plus中.

也就是说,虽然您对大型索引对象的需求的评论是正确的,但您也可以使用

  • 来自apply家庭的功能,例如sapply,lapplytapply展开您的结构

  • 相对较新的迭代器包,它也避免了你提到的作为内存约束的大向量

  • 所述RA"加速R"变体和其JIT包可显著加速简单的循环.

作为额外的奖励,选项一和二使用来自CRAN软件包snow,multicore或NWS的工具提供了在合适系统上并行执行循环的路径,仅举几例.