L’erreur du bootstrap
Vous travaillez comme programmeur R dans un laboratoire clinique. La statisticienne du labo mène une analyse à grande échelle pour établir les intervalles des poids moyens de différentes espèces de souris. Elle a écrit une fonction, bootstrap(), qui est appliquée à chaque élément de weight_list en parallèle via un backend futures. Cependant, le code renvoie l’erreur suivante :
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
Elle n’arrive pas à identifier l’élément de weight_list qui provoque l’erreur. Elle perd aussi tous les résultats de ce calcul coûteux en temps. On vous a demandé de corriger le code. Le package furrr a été chargé pour vous et multisession a été planifié pour les futures.
Cet exercice fait partie du cours
Programmation parallèle en R
Instructions
- Fournissez, entre les accolades, le code d’une fonction capable d’intercepter l’erreur.
- Pour l’argument error, fournissez une fonction qui prend un argument,
e, et renvoie la chaîne"Error here!". - Appliquez
bootstrap()à tous les éléments deweight_listen utilisant une fonction defurrr.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)