Un filtru în paralel
Lucrezi ca și consultant de date pentru Națiunile Unite, iar aceștia doresc să realizeze un sondaj în rândul studenților la arte din întreaga lume. Au obținut un set de date cu universități care au departamente de arte și științe umaniste și au decis să selecteze cele mai bune universități de arte din fiecare țară pentru sondaj.
uni_list este o listă de date frames, fiecare element conținând datele dintr-o țară. Fiecare data frame are o coloană total_score. Ai la dispoziție următoarea funcție:
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
Această funcție necesită dplyr. Argumentul select_n_unis definește numărul de universități de top care vor fi selectate. Ți s-a cerut să filtrezi primele cinci universități din fiecare fișier CSV, în paralel. Pachetul parallel a fost deja încărcat.
Acest exercițiu face parte din cursul
Programare paralelă în R
Instrucțiuni pentru exercițiu
- Încarcă
dplyrpe fiecare nucleu din clusterulcl. - Exportă variabila
n_uniscătre clusterulcl. - Aplică
filter_df()fiecărui element dinuni_listfolosindparLapply(). - Furnizează numărul de universități de selectat,
n_unis, argumentului corespunzător dinfilter_df().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)