Для этой проблемы purrr
имеет три полезные функции, которые фиксируют побочные эффекты.safely()
и две его дополнительные подфункции quietly()
и possibly()
являются наречиями и работают так же, как map()
.Так что в вашем случае вы можете просто заменить map()
на safely()
, если вы хотите вернуть список с result
и соответствующим error
для каждой итерации.Вы также можете использовать possibly()
вместо map()
- здесь вы получите обычный список, как в map()
, но вы можете указать выходное значение, которое должно быть возвращено, если итерация выдает ошибку.
Из-за возможных различных ошибок я бы предложил в качестве первого шага использовать safely()
, чтобы убедиться, что все неудачные итерации имеют одинаковую ошибку.Ознакомьтесь с документацией purrr::safely()
.
Надеюсь, это поможет!