Bootstrap-felet
Du arbetar som R-programmerare på ett kliniskt laboratorium. Statistikern på labbet genomför en storskalig analys för att fastställa normalvärden för genomsnittsvikten hos olika musarter. Hon har skrivit en funktion, bootstrap(), som appliceras på varje element i weight_list parallellt med hjälp av ett futures-backend. Koden ger dock följande fel:
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
Hon kan inte identifiera vilket element i weight_list som orsakar felet. Dessutom förlorar hon alla resultat från den tidskrävande beräkningen. Du har fått i uppgift att åtgärda koden. Paketet furrr är redan inläst och multisession har planerats för futures.
Den här övningen är en del av kursen
Parallell programmering i R
Övningsinstruktioner
- Lägg in koden i de klammerparenteser som ska skickas till en funktion som kan fånga felet.
- Ange som
error-argument en funktion som tar ett argument,e, och returnerar strängen"Error here!". - Applicera
bootstrap()på alla element iweight_listmed hjälp av enfurrr-funktion.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)