Ошибка в бутстрэпе
Вы работаете R-программистом в клинической лаборатории. Статистик лаборатории проводит масштабный анализ для определения диапазонов средней массы различных видов мышей. Она написала функцию bootstrap(), которая применяется к каждому элементу weight_list в параллельном режиме с использованием бэкенда futures. Однако код вызывает следующую ошибку:
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
Она не может найти элемент weight_list, который вызывает ошибку, и теряет все результаты трудоёмких вычислений. Вам поручено исправить код. Пакет furrr уже подключён, а для futures настроен план multisession.
Это упражнение является частью курса
Параллельное программирование на R
Инструкции к упражнению
- Поместите код в фигурных скобках внутрь функции, которая умеет перехватывать ошибки.
- В аргумент
errorпередайте функцию, принимающую один аргументeи возвращающую строку"Error here!". - Примените
bootstrap()ко всем элементамweight_listс помощью функции из пакетаfurrr.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
bootstrap <- function (x) {
# Supply code to a function for catching errors
___({est <- rep(0, 1e3)
for (i in 1:1e3) {
b <- sample(x, replace = T)
est[i] <- mean(b)
}
return(quantile(est, c(0.25, 0.75)))
# Supply a function that returns a string
}, error = ___
)
}
# Map bootstrap() to every element of weight_list
___(___, ___)
plan(sequential)