Должны ли циклы while быть предпочтительнее циклов for для больших необходимых циклов в R? - PullRequest
6 голосов
/ 06 августа 2009

Понимая, что циклы обычно не идеальны в R, иногда они необходимы.

При написании больших циклов

for (i in 1:large_number) 

пустая память, так как должен быть создан вектор размером large_number?

Будет ли этот цикл лучшим вариантом для больших необходимых циклов?

1 Ответ

12 голосов
/ 06 августа 2009

Во-первых, многие из болтовни «петли - это плохо» проистекают из темных веков, когда петли фактически менее эффективно реализованы, особенно в некоторых версиях S-Plus.

Тем не менее, и хотя ваш комментарий о необходимости большого индексного объекта верен, вы также можете использовать

  • функций из семейства apply, таких как sapply, lapply или tapply, для развертывания ваших структур

  • относительно новый итератор пакет, который также позволяет избежать большого вектора, который вы упомянули как ограничение памяти

  • вариант Ra 'ускоренный R' и его пакет jit , который может значительно ускорить простые циклы.

В качестве дополнительного бонуса опции один и два дают путь к параллельному выполнению циклов в подходящих системах с использованием инструментов из пакетов CRAN snow, multicore или NWS, и это лишь некоторые из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...