병렬 필터링
당신은 United Nations의 데이터 컨설턴트로 일하고 있으며, 전 세계 예술 전공 학생을 대상으로 설문을 진행하려고 합니다. 그들은 인문·예술 학과가 있는 대학교 데이터셋을 수집했고, 각 국가에서 상위 예술 대학을 선정해 설문 대상으로 삼기로 했습니다.
uni_list는 데이터 프레임의 리스트로, 각 원소가 한 국가의 데이터입니다. 각 데이터 프레임에는 total_score 열이 있습니다. 다음 함수를 사용할 수 있어요:
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
이 함수는 dplyr이 필요합니다. select_n_unis 인수는 선택할 상위 대학 수를 지정합니다. 각 CSV 파일에서 상위 5개 대학만 병렬로 필터링하라는 요청을 받았습니다. parallel 패키지는 이미 로드되어 있어요.
이 연습은 강의의 일부입니다
R의 병렬 프로그래밍
연습 안내
- 클러스터
cl의 각 코어에서dplyr을 로드하세요. - 변수
n_unis를 클러스터cl로 내보내세요. parLapply()를 사용해uni_list의 각 원소에filter_df()를 적용하세요.- 선택할 대학 수
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)