始める無料で始める

並列フィルター

あなたは国連のデータコンサルタントとして、世界中の芸術系学生を対象に調査を行うことになりました。芸術・人文学部を持つ大学のデータセットが用意され、各国で上位の芸術系大学を調査対象に選ぶ方針です。

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)
コードを編集して実行