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