부트스트랩 에러
임상 연구소에서 R 프로그래머로 일하고 있어요. 연구소의 통계학자가 서로 다른 생쥐 종의 평균 체중 범위를 산출하기 위한 대규모 분석을 진행 중입니다. 통계학자는 futures 백엔드를 사용해 weight_list의 각 원소에 병렬로 적용되는 bootstrap() 함수를 작성했어요. 하지만 코드가 다음과 같은 에러를 발생시킵니다:
Error in checkForRemoteErrors(val) :
one node produced an error: missing values and NaN's not allowed if 'na.rm' is FALSE
그녀는 어떤 weight_list의 원소가 에러를 일으키는지 찾지 못하고, 시간 소모가 큰 계산의 모든 결과도 잃고 있어요. 여러분이 코드를 고쳐 달라는 요청을 받았습니다. furrr 패키지는 이미 로드되어 있고, futures는 multisession으로 계획되어 있어요.
이 연습은 강의의 일부입니다
R의 병렬 프로그래밍
연습 안내
- 중괄호 안의 코드에 에러를 잡을 수 있는 함수를 제공하세요.
- error 인수에는 하나의 인수
e를 받아 문자열"Error here!"를 반환하는 함수를 넣으세요. furrr함수를 사용해bootstrap()을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)