Bootstrap 錯誤
你在一家臨床實驗室擔任 R 程式設計師。實驗室的統計學家正在進行大規模分析,想建立不同小鼠品種的平均體重區間。她寫了一個函式 bootstrap(),並透過 futures 後端將它平行套用到 weight_list 的每個元素。然而,程式碼丟出了以下錯誤:
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!"的函式。 - 使用
furrr的對應函式,將bootstrap()對映到weight_list的所有元素。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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)