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