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
Anleitung zur Übung
- Lade
dplyrauf jedem Kern im Clustercl. - Exportiere die Variable
n_uniszum Clustercl. - Wende
filter_df()mitparLapply()auf jedes Element vonuni_listan. - Übergib die Anzahl der auszuwählenden Universitäten,
n_unis, an das richtige Argument vonfilter_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)