Un filtre en parallèle
Vous travaillez comme consultant·e données pour les Nations Unies, qui souhaitent interroger des étudiant·e·s en arts à l’échelle mondiale. Ils ont collecté un jeu de données d’universités disposant de départements d’arts et de lettres. Ils ont décidé de sélectionner les meilleures universités d’arts dans chaque pays pour l’enquête.
uni_list est une liste de data frames, chaque élément correspondant aux données d’un pays. Chaque data frame contient une colonne total_score. La fonction suivante est à votre disposition :
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
Cette fonction nécessite dplyr. L’argument select_n_unis définit le nombre d’universités à sélectionner. On vous a demandé de filtrer, en parallèle, les cinq meilleures universités de chaque fichier CSV. Le package parallel a été chargé pour vous.
Cet exercice fait partie du cours
Programmation parallèle en R
Instructions
- Chargez
dplyrsur chaque cœur du clustercl. - Exportez la variable
n_unisvers le clustercl. - Appliquez
filter_df()à chaque élément deuni_listavecparLapply(). - Fournissez le nombre d’universités à sélectionner,
n_unis, à l’argument approprié defilter_df().
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)