Все остальные дали правильные способы решения одной и той же задачи, так что вам не нужно беспокоиться о скорости. @BenBolker также дал хороший совет относительно регулярного вывода.
Следует также отметить, что если вы окажетесь в цикле, вы можете выйти из него и найти значение i
. Предполагая, что повторный запуск с этого значения i
не повредит, то есть использование этого значения дважды не будет проблемой, вы можете перезапустить. Или вы можете просто закончить работу, как заявили другие.
Отдельный трюк заключается в том, что если цикл медленный (и его нельзя векторизовать, или же вы не хотите выходить из цикла), И у вас нет отчетов, вы можете по-прежнему ищите внешний метод, чтобы увидеть, действительно ли R потребляет циклы на вашем компьютере. В Linux лучше всего подходит команда top
. В Windows с этим справится диспетчер задач (я предпочитаю использовать программу SysInternals/Microsoft Process Explorer). «top» также существует на Mac, хотя я считаю, что есть и другие более популярные инструменты.
Еще один совет: если вам нужно запустить очень длинный цикл, я настоятельно рекомендую регулярно сохранять результаты. Обычно я создаю файл с именем вроде: myPrefix_YYYYMMDDHHMMSS.rdat
. Таким образом, все может пойти к черту, и вы все еще можете начать цикл с того места, на котором остановились.
Я не всегда итерирую, но когда делаю, использую эти приемы. Будь быстрым, мой друг.
person
Iterator
schedule
06.09.2011
noise4 <- na.omit(noise3)
. - person Joshua Ulrich   schedule 06.09.2011for
в этом случае работают медленно и как этого избежать: stackoverflow.com/q/6502444 /602276 - person Andrie   schedule 06.09.2011for
— один из наименее эффективных способов использования R. Большинство функций R естественным образом перебирают векторы. Взгляните на эту статью: yihui.name/ en/2010/10/on-the-gory-loops-in-r Здесь объясняется, чем подход R отличается от обычного программирования. - person dnagirl   schedule 06.09.2011