Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Wczytaj dplyr na każdym rdzeniu klastra cl.
  • Wyeksportuj zmienną n_unis do klastra cl.
  • Zastosuj funkcję filter_df() do każdego elementu listy uni_list, używając parLapply().
  • Przekaż liczbę uczelni do wybrania, n_unis, do odpowiedniego argumentu funkcji filter_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)
Edytuj i uruchom kod