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
Övningsinstruktioner
- Läs in
dplyrpå varje kärna i klustretcl. - Exportera variabeln
n_unistill klustretcl. - Tillämpa
filter_df()på varje element iuni_listmed hjälp avparLapply(). - Ange antalet universitet som ska väljas ut,
n_unis, som rätt argument ifilter_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)