開始使用免費開始

平行過濾

你受僱為聯合國的資料顧問,他們想要對全球藝術相關科系的學生進行調查。他們已經彙整了一份包含設有藝術與人文學院之大學的資料集,並決定在每個國家各自挑選頂尖的藝術大學進行調查。

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)
編輯並執行程式碼