Błąd w bootstrapie
Pracujesz jako programista R w laboratorium klinicznym. Statystyk zatrudniony w laboratorium prowadzi zakrojoną na szeroką skalę analizę, której celem jest wyznaczenie przedziałów średnich mas ciała dla różnych gatunków myszy. Napisał funkcję bootstrap(), która jest stosowana równolegle do każdego elementu listy weight_list z użyciem backendu futures. Jednak kod zgłasza następujący błąd:
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
Statystyk nie może znaleźć elementu listy weight_list, który wywołuje błąd. Na dodatek traci wszystkie wyniki czasochłonnych obliczeń. Twoim zadaniem jest naprawienie kodu. Pakiet furrr jest już wczytany, a plan multisession dla futures został skonfigurowany.
To ćwiczenie jest częścią kursu
Programowanie równoległe w R
Instrukcje do ćwiczenia
- Umieść kod w nawiasach klamrowych wewnątrz funkcji, która potrafi przechwycić błąd.
- W argumencie
errorpodaj funkcję przyjmującą jeden argument,e, i zwracającą ciąg znaków"Error here!". - Zastosuj funkcję
bootstrap()do wszystkich elementów listyweight_listprzy użyciu odpowiedniej funkcji z pakietufurrr.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)