ПочатиПочніть безкоштовно

Паралельна фільтрація

Ви працюєте дата-консультантом для Організації Об'єднаних Націй, і вони хочуть опитати студентів мистецьких спеціальностей у всьому світі. Вони зібрали набір даних університетів з факультетами мистецтв і гуманітарних наук. Для опитування вирішили обрати провідні мистецькі університети в кожній країні.

uni_list — це список датафреймів, де кожен елемент містить дані окремої країни. Кожен датафрейм має стовпчик total_score. Для вас доступна така функція:

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

Ця функція потребує dplyr. Аргумент select_n_unis задає кількість найкращих університетів для вибору. Вас просять відфільтрувати п'ять найкращих університетів з кожного CSV-файла паралельно. Пакет parallel уже підключено.

Ця вправа є частиною курсу

Паралельне програмування в R

Переглянути курс

Інструкції до вправи

  • Завантажте dplyr на кожному ядрі в кластері cl.
  • Експортуйте змінну n_unis до кластера cl.
  • Застосуйте filter_df() до кожного елемента uni_list, використовуючи parLapply().
  • Передайте кількість університетів для вибору, n_unis, у відповідний аргумент filter_df().

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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)
Редагувати та запускати код