Kom igångKom igång gratis

Ett parallellt filter

Du arbetar som datakonsult åt FN, som vill undersöka konststudenter globalt. De har tagit fram en datamängd med universitet som har konst- och humanioraavdelningar och beslutat att välja ut de främsta konstuniiversiteten i varje land för undersökningen.

uni_list är en lista med dataramar där varje element innehåller data från ett land. Varje dataram har en kolumn total_score. Följande funktion finns tillgänglig:

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

Funktionen kräver dplyr. Argumentet select_n_unis anger hur många topprankade universitet som ska väljas ut. Du har fått i uppgift att parallellt filtrera fram de fem bästa universiteten från varje CSV-fil. Paketet parallel har redan laddats åt dig.

Den här övningen är en del av kursen

Parallell programmering i R

Visa kurs

Övningsinstruktioner

  • Läs in dplyr på varje kärna i klustret cl.
  • Exportera variabeln n_unis till klustret cl.
  • Tillämpa filter_df() på varje element i uni_list med hjälp av parLapply().
  • Ange antalet universitet som ska väljas ut, n_unis, som rätt argument i filter_df().

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod