並列フィルター
あなたは国連のデータコンサルタントとして、世界中の芸術系学生を対象に調査を行うことになりました。芸術・人文学部を持つ大学のデータセットが用意され、各国で上位の芸術系大学を調査対象に選ぶ方針です。
uni_list はデータフレームのリストで、各要素はある国のデータです。各データフレームには total_score 列が含まれます。次の関数が用意されています。
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
この関数は dplyr を必要とします。select_n_unis 引数は選択する上位大学の数を指定します。各 CSV ファイルから上位5校を並列で抽出するよう依頼されています。parallel パッケージはすでに読み込まれています。
この演習はコースの一部です
R による並列プログラミング
演習の手順
- クラスター
clの各コアでdplyrを読み込みます。 - 変数
n_unisをクラスターclにエクスポートします。 parLapply()を使って、uni_listの各要素にfilter_df()を適用します。- 抽出する大学数
n_unisを、filter_df()の正しい引数に渡します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
cl <- makeCluster(4)
# Load dplyr in cluster
___
n_unis <- 5
# Export n_unis to cluster
___(___, ___, envir = environment())
# Apply filter_df() to each element of uni_list
ls_df <- parLapply(___, ___, ___,
# Supply number of universities to select
___ = ___)
stopCluster(cl)