IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Carica dplyr su ogni core del cluster cl.
  • Esporta la variabile n_unis nel cluster cl.
  • Applica filter_df() a ciascun elemento di uni_list usando parLapply().
  • Fornisci il numero di università da selezionare, n_unis, all'argomento corretto di filter_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)
Modifica ed esegui il codice