ฟิลเตอร์แบบขนาน
สมมติว่าทำงานเป็นที่ปรึกษาด้านข้อมูลให้กับสหประชาชาติ ซึ่งต้องการสำรวจนักศึกษาสายศิลปศาสตร์ทั่วโลก พวกเขามีชุดข้อมูลของมหาวิทยาลัยที่มีภาควิชาศิลปศาสตร์และมนุษยศาสตร์ และต้องการคัดเลือกมหาวิทยาลัยด้านศิลปะชั้นนำของแต่ละประเทศเพื่อเข้าร่วมการสำรวจ
uni_list คือ list ของ data frame โดยแต่ละ element คือข้อมูลของแต่ละประเทศ ซึ่งแต่ละ data frame มีคอลัมน์ชื่อ total_score ฟังก์ชันต่อไปนี้พร้อมใช้งานแล้ว:
filter_df <- function (df, select_n_unis) {
df %>%
top_n(select_n_unis, total_score)
}
ฟังก์ชันนี้ต้องใช้ dplyr โดยอาร์กิวเมนต์ select_n_unis กำหนดจำนวนมหาวิทยาลัยอันดับสูงสุดที่ต้องการเลือก โจทย์ให้กรองเพื่อเลือก 5 มหาวิทยาลัยอันดับสูงสุดจากแต่ละไฟล์ CSV แบบขนาน แพ็กเกจ parallel โหลดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- โหลด
dplyrบนแต่ละ core ใน clustercl - ส่งออกตัวแปร
n_unisไปยัง clustercl - ใช้
filter_df()กับแต่ละ element ของ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)