ブートストラップのエラー
あなたは臨床検査室でRプログラマーとして働いています。研究室の統計担当者は、複数のマウス種における平均体重の範囲を推定する大規模解析を行っています。彼女は bootstrap() という関数を作成し、weight_list の各要素に対して、futures バックエンドを使って並列に適用しています。しかし、次のエラーが発生します。
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を1つ取り、文字列"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)