Aan de slagGa gratis aan de slag

Een parallelle filter

Je werkt als dataconsultant voor de Verenigde Naties, en zij willen wereldwijd kunststudenten enquêteren. Ze hebben een gegevensset verzameld van universiteiten met opleidingen in kunst en geesteswetenschappen. Ze hebben besloten om voor elk land de beste kunstuniversiteiten te selecteren voor de enquête.

uni_list is een lijst met dataframes; elk element bevat de gegevens van één land. Elk dataframe bevat een kolom total_score. De volgende functie is beschikbaar voor je:

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

Deze functie vereist dplyr. Het argument select_n_unis bepaalt hoeveel topuniversiteiten je selecteert. Je bent gevraagd om parallel de top vijf universiteiten uit elk CSV-bestand te filteren. Het pakket parallel is alvast voor je geladen.

Deze oefening maakt deel uit van de cursus

Parallel programmeren in R

Cursus bekijken

Oefeninstructies

  • Laad dplyr op elke core in cluster cl.
  • Exporteer de variabele n_unis naar cluster cl.
  • Pas filter_df() toe op elk element van uni_list met parLapply().
  • Geef het aantal te selecteren universiteiten, n_unis, door aan het juiste argument van filter_df().

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren