У меня иногда есть длинные * петли ply в R, где, например, API вызывается на каждой итерации.Сохранить вывод из прерванного цикла/* ply
Мне интересно, можно ли вручную прервать функцию * ply после ее запуска, в то время как возвращение последней завершенной итерации сохраняется.
Когда я использую цикл for и заранее создаю пустой объект, где я присоединяю возврат цикла на каждой итерации к одному и тому же объекту, у меня есть такой частичный возврат в случае ручного прерывания. Мне интересно, возможно ли это для семейства функций.
Я знаю, что лучший способ сделать это - сначала проверить цикл с небольшим количеством итераций, а затем запустить его в комплекте. Другим способом было бы использовать tryCatch()
или цикл foreach()
с .errorhandling="pass"
, чтобы избежать прерванного цикла из-за плохих возвратов. Тем не менее, я ищу способ ручного прерывания.
Прямо сейчас я использую функцию save()
для записи на диск, но это значительно замедляет работу и поэтому не представляется возможным. Я бы предположил, что можно записать в ранее создаваемую среду на assign()
, но это также немного хакерское и может привести к неправильной перезаписке.
Оптимальным было бы, если кто-то знает способ сделать это с помощью dplyr's do()
.
Я не думаю, что это возможно, поскольку функции не работают таким образом, чтобы обеспечить частичный выход, но было бы интересно доказать, что это неправильно. –