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

จัดสรรทุนสังคมศาสตร์ด้วย Future

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

ใน workspace มีลิสต์ชื่อ rating_list โดยแต่ละ element บรรจุคะแนนการวิจัยของมหาวิทยาลัยในแต่ละประเทศ นอกจากนี้ยังมีฟังก์ชัน generate_cutoff_future() ให้ใช้งาน ซึ่งสร้าง future สำหรับการคำนวณค่า cutoff อย่างไรก็ตาม ผู้จัดการของคุณยังไม่แน่ใจถึงข้อดีของ future เมื่อเทียบกับวิธีการทำงานแบบขนานอื่น ๆ คุณจึงต้องแสดงให้เห็นว่า future รองรับทั้งการรันแบบลำดับและแบบขนานได้โดยไม่ต้องแก้ไขโค้ดหลัก โดย package future ถูกโหลดไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนโปรแกรมแบบขนานใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง future แบบ sequential โดยใช้ lapply() กับ generate_cutoff_future() บน rating_list ภายใต้แผน sequential
  • ดึงค่าจาก future แบบ sequential
  • สร้าง future แบบ parallel ภายใต้แผน parallel
  • ดึงค่าจาก future แบบ parallel

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

plan(sequential)
# Create futures under sequential plan
seq_futures <- ___(___, ___)
# Extract values of sequential futures
seq_values <- ___(___)

plan(multisession, workers = 4)
# Create futures under multisession plan
par_futures <- ___(___, ___)
# Extract values of parallel futures
par_values <- ___(___)
               
plan(sequential)

cbind(seq_values, par_values)
แก้ไขและรันโค้ด