Un filtro in parallelo
Stai lavorando come consulente dati per le Nazioni Unite: vogliono fare un sondaggio tra gli studenti di arti a livello globale. Hanno raccolto un insieme di dati di università con dipartimenti di arti e scienze umane. Hanno deciso di selezionare, per il sondaggio, le migliori università di arti in ogni paese.
uni_list è una lista di data frame, ciascun elemento contiene i dati di un paese. Ogni data frame include una colonna total_score. Hai a disposizione la seguente funzione:
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
Questa funzione richiede dplyr. L'argomento select_n_unis definisce il numero di università migliori da selezionare. Ti è stato chiesto di filtrare, in parallelo, le prime cinque università da ciascun file CSV. Il pacchetto parallel è già stato caricato per te.
Questo esercizio fa parte del corso
Programmazione parallela in R
Istruzioni dell'esercizio
- Carica
dplyrsu ogni core del clustercl. - Esporta la variabile
n_unisnel clustercl. - Applica
filter_df()a ciascun elemento diuni_listusandoparLapply(). - Fornisci il numero di università da selezionare,
n_unis, all'argomento corretto difilter_df().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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)