Równoległe filtrowanie
Pracujesz jako konsultant ds. danych dla Organizacji Narodów Zjednoczonych, która chce przeprowadzić ankietę wśród studentów kierunków artystycznych na całym świecie. ONZ zebrała zbiór danych o uczelniach posiadających wydziały sztuki i nauk humanistycznych, a następnie zdecydowała, że do ankiety zostaną wybrane najlepsze uczelnie artystyczne z każdego kraju.
uni_list to lista ramek danych – każdy element zawiera dane z jednego kraju. Każda ramka danych zawiera kolumnę total_score. Do dyspozycji masz następującą funkcję:
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
Funkcja ta wymaga biblioteki dplyr. Argument select_n_unis określa liczbę najlepszych uczelni do wybrania. Twoim zadaniem jest równoległe odfiltrowanie pięciu najlepszych uczelni z każdego pliku CSV. Pakiet parallel jest już wczytany.
To ćwiczenie jest częścią kursu
Programowanie równoległe w R
Instrukcje do ćwiczenia
- Wczytaj
dplyrna każdym rdzeniu klastracl. - Wyeksportuj zmienną
n_unisdo klastracl. - Zastosuj funkcję
filter_df()do każdego elementu listyuni_list, używającparLapply(). - Przekaż liczbę uczelni do wybrania,
n_unis, do odpowiedniego argumentu funkcjifilter_df().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)