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