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
Oefeninstructies
- Laad
dplyrop elke core in clustercl. - Exporteer de variabele
n_unisnaar clustercl. - Pas
filter_df()toe op elk element vanuni_listmetparLapply(). - Geef het aantal te selecteren universiteiten,
n_unis, door aan het juiste argument vanfilter_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)