并行过滤器
您在联合国担任数据顾问,他们希望对全球艺术类学生进行调研。他们收集了一份包含设有人文与艺术学院的大学数据集,并决定在每个国家中选出顶尖的艺术类大学参与问卷。
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()将filter_df()应用于uni_list的每个元素。 - 将要选择的大学数量
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)