เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ฟิลเตอร์แบบขนาน

สมมติว่าทำงานเป็นที่ปรึกษาด้านข้อมูลให้กับสหประชาชาติ ซึ่งต้องการสำรวจนักศึกษาสายศิลปศาสตร์ทั่วโลก พวกเขามีชุดข้อมูลของมหาวิทยาลัยที่มีภาควิชาศิลปศาสตร์และมนุษยศาสตร์ และต้องการคัดเลือกมหาวิทยาลัยด้านศิลปะชั้นนำของแต่ละประเทศเพื่อเข้าร่วมการสำรวจ

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 ใน cluster cl
  • ส่งออกตัวแปร n_unis ไปยัง cluster cl
  • ใช้ 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)
แก้ไขและรันโค้ด