使用 clusterMap() 計算醫療支出
在最近的一場醫療研討會上,有人主張全球總醫療支出正在上升。
你也在現場,想先做個粗略估算來驗證這個說法。你找到一個資料集,提供 2000 年起的人均醫療支出與人口數。你手上有兩個清單:ls_pop 與 ls_exp。它們分別包含各國的人口數與人均醫療支出。
有一個函式 total_exp(),需要兩個引數:pop(人口)與 exp_pc(人均醫療支出)。這個函式會回傳以十億美元為單位的總支出。你想要把這個函式並行套用到 ls_pop 與 ls_exp。已經載入 parallel 套件。
本練習屬於課程
R 平行程式設計
練習說明
- 將
total_exp()並行套用到ls_pop與ls_exp的各元素。 - 指定要提供給
total_exp()之pop引數的清單。 - 同樣地,指定要提供給
total_exp()之exp_pc引數的清單。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
total_exp <- function (pop, exp_pc) {
sum(pop * exp_pc)/1e9
}
cl <- makeCluster(4)
# Apply total_exp using cl to multiple arguments
ls_total <- ___(___, ___,
# Specify first argument
pop = ___,
# Specify second argument
exp_pc = ___)
stopCluster(cl)
print(paste("Average yearly increase in USD billions:", round(mean(diff(unlist(ls_total))))))