LoslegenKostenlos loslegen

Ein paralleler Filter

Du arbeitest als Datenberater:in für die Vereinten Nationen. Es soll weltweit eine Umfrage unter Kunststudierenden durchgeführt werden. Dafür wurde ein Datensatz mit Universitäten beschafft, die Fachbereiche für Kunst und Geisteswissenschaften haben. Für die Umfrage sollen die besten Kunstuniversitäten in jedem Land ausgewählt werden.

uni_list ist eine Liste von Data Frames, deren Elemente jeweils die Daten eines Landes enthalten. Jeder Data Frame enthält eine Spalte total_score. Folgende Funktion steht dir zur Verfügung:

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

Diese Funktion benötigt dplyr. Das Argument select_n_unis legt fest, wie viele Top-Universitäten ausgewählt werden. Deine Aufgabe ist es, parallel aus jeder CSV-Datei die fünf besten Universitäten zu filtern. Das Paket parallel wurde bereits für dich geladen.

Diese Übung ist Teil des Kurses

Paralleles Programmieren in R

Kurs anzeigen

Anleitung zur Übung

  • Lade dplyr auf jedem Kern im Cluster cl.
  • Exportiere die Variable n_unis zum Cluster cl.
  • Wende filter_df() mit parLapply() auf jedes Element von uni_list an.
  • Übergib die Anzahl der auszuwählenden Universitäten, n_unis, an das richtige Argument von filter_df().

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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)
Code bearbeiten und ausführen