Paralel bir filtre
Birleşmiş Milletler için veri danışmanı olarak çalışıyorsun ve onlar dünya genelinde sanat öğrencilerini araştırmak istiyor. Sanat ve beşeri bilimler bölümleri olan üniversitelerden oluşan bir veri kümesi toplamışlar. Anket için her ülkedeki en iyi sanat üniversitelerini seçmeye karar verdiler.
uni_list, her bir öğesi bir ülkenin verisini içeren veri çerçevelerinden oluşan bir listedir. Her veri çerçevesinde total_score adında bir sütun bulunur. Aşağıdaki fonksiyon sana verilmiştir:
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
Bu fonksiyon dplyr gerektirir. select_n_unis argümanı, seçilecek en iyi üniversite sayısını tanımlar. Her CSV dosyasından paralel olarak en iyi beş üniversiteyi filtrelemen istendi. parallel paketi senin için yüklendi.
Bu egzersiz, kursun bir parçasıdır
R'da Paralel Programlama
Egzersiz talimatları
- Küme
cliçindeki her çekirdektedplyr'ı yükle. n_unisdeğişkeniniclkümesine aktar.parLapply()kullanarakfilter_df()fonksiyonunuuni_list'in her bir öğesine uygula.- Seçilecek üniversite sayısı olan
n_unis'i,filter_df()'ün doğru argümanına ver.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)