意识到循环在 R 中通常并不理想,有时它们是必要的。
编写大循环时,不
for (i in 1:large_number)
浪费内存,因为必须创建一个大小为 large_number 的向量?
这会使 while 循环成为大型必要循环的最佳选择吗?
意识到循环在 R 中通常并不理想,有时它们是必要的。
编写大循环时,不
for (i in 1:large_number)
浪费内存,因为必须创建一个大小为 large_number 的向量?
这会使 while 循环成为大型必要循环的最佳选择吗?
首先,很多“循环很糟糕”的喋喋不休源于黑暗时代,当时循环实际上实现效率较低,特别是在某些版本的 S-Plus 中。
也就是说,虽然您关于需要大型索引对象的评论是正确的,但您也可以使用
来自apply
家庭的功能,例如sapply
,lapply
或tapply
展开您的结构
相对较新的迭代器包,它也避免了你提到的大向量作为内存限制
Ra 'accelerated R' 变体及其 jit 包可以显着加速简单循环。
作为额外的奖励,选项一和二提供了一条使用 CRAN 包中的工具在合适的系统上并行执行循环的途径,这些工具包括雪、多核或 NWS。