ข้อผิดพลาดใน Bootstrap
คุณทำงานเป็นโปรแกรมเมอร์ R ในห้องปฏิบัติการทางคลินิก นักสถิติประจำห้องแล็บกำลังทำการวิเคราะห์ขนาดใหญ่เพื่อกำหนดช่วงน้ำหนักเฉลี่ยของหนูสายพันธุ์ต่าง ๆ เธอเขียนฟังก์ชัน bootstrap() เพื่อนำไปใช้กับทุกองค์ประกอบใน weight_list แบบขนานโดยใช้ futures backend อย่างไรก็ตาม โค้ดเกิดข้อผิดพลาดดังนี้:
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
เธอไม่สามารถระบุได้ว่าองค์ประกอบใดใน weight_list ที่ทำให้เกิดข้อผิดพลาด และยังสูญเสียผลลัพธ์ทั้งหมดจากการคำนวณที่ใช้เวลานานอีกด้วย คุณได้รับมอบหมายให้แก้ไขโค้ดนี้ โดยมีการโหลดแพ็กเกจ furrr ไว้ให้แล้ว และได้วางแผน multisession สำหรับ futures เรียบร้อยแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- นำโค้ดในวงเล็บปีกกาไปใส่ในฟังก์ชันที่สามารถดักจับข้อผิดพลาดได้
- สำหรับอาร์กิวเมนต์
errorให้ระบุฟังก์ชันที่รับอาร์กิวเมนต์หนึ่งตัวคือeและคืนค่าเป็นสตริง"Error here!" - ใช้ฟังก์ชันจาก
furrrเพื่อ mapbootstrap()ไปยังทุกองค์ประกอบในweight_list
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
bootstrap <- function (x) {
# Supply code to a function for catching errors
___({est <- rep(0, 1e3)
for (i in 1:1e3) {
b <- sample(x, replace = T)
est[i] <- mean(b)
}
return(quantile(est, c(0.25, 0.75)))
# Supply a function that returns a string
}, error = ___
)
}
# Map bootstrap() to every element of weight_list
___(___, ___)
plan(sequential)