CommencezCommencez gratuitement

Un filtre en parallèle

Vous travaillez comme consultant·e en données pour l'Organisation des Nations unies, qui souhaite sonder les étudiants en arts à l'échelle mondiale. Elle a obtenu un jeu de données d'universités ayant des départements en arts et en sciences humaines. Elle a décidé de sélectionner les meilleures universités en arts de chaque pays pour le sondage.

uni_list est une liste de trames de données, chaque élément correspondant aux données d'un pays. Chaque trame de données contient une colonne total_score. La fonction suivante est mise à votre disposition :

filter_df <- function (df, select_n_unis) {
  df %>% 
    top_n(select_n_unis, total_score)
}

Cette fonction nécessite dplyr. Le paramètre select_n_unis définit le nombre d'universités à sélectionner parmi les meilleures. On vous a demandé de filtrer, en parallèle, les cinq meilleures universités de chaque fichier CSV. Le paquet parallel a été chargé pour vous.

Cette activité fait partie du cours

Programmation parallèle en R

Voir le cours

Instructions de l’exercice

  • Charger dplyr sur chaque cœur du grappe cl.
  • Exporter la variable n_unis vers le grappe cl.
  • Appliquer filter_df() à chaque élément de uni_list à l'aide de parLapply().
  • Fournir le nombre d'universités à sélectionner, n_unis, au bon argument de filter_df().

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code