De bootstrap-fout
Je werkt als R-programmeur voor een klinisch laboratorium. De statisticus in het lab voert een grootschalige analyse uit om bereiken vast te stellen voor de gemiddelde gewichten van verschillende muizensoorten. Zij heeft een functie bootstrap() geschreven die op elk element van weight_list parallel wordt toegepast met een futures-backend. Maar de code geeft de volgende foutmelding:
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
Ze kan het element van weight_list dat de fout veroorzaakt niet vinden. Ook verliest ze alle resultaten van de tijdrovende berekening. Jij bent gevraagd de code te repareren. Het pakket furrr is al voor je geladen en multisession voor de futures is gepland.
Deze oefening maakt deel uit van de cursus
Parallel programmeren in R
Oefeninstructies
- Voorzie de code tussen de accolades van een functie die de fout kan opvangen.
- Geef aan het error-argument een functie die één argument,
e, aanneemt en de string"Error here!"retourneert. - Map
bootstrap()naar alle elementen van deweight_listmet eenfurrr-functie.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)