pmap()로 3개 이상 입력 데이터 시뮬레이션하기
세 개의 리스트를 반복 처리해야 한다면 어떨까요? map3()가 있을까요? 두 개보다 많은 리스트(셋, 넷, 심지어 스무 개까지)를 반복하려면 pmap()을 사용해야 해요. 다만, pmap()은 리스트 인수를 조금 다르게 전달해야 합니다.
pmap()을 사용하려면 먼저 반복 처리할 모든 리스트를 하나로 모은 ‘마스터 리스트’를 만들어야 해요. 이 마스터 리스트가 pmap()의 입력이 됩니다. 그리고 .x나 .y 대신, 리스트 이름을 그대로 인수 이름으로 사용합니다.
이번에는 두 개가 아닌 다섯 개의 리스트를 입력으로 사용해 데이터를 한 번 더 시뮬레이션해 볼게요. pmap()을 사용하면 시뮬레이션한 데이터셋을 완전히 제어할 수 있고, 서로 다른 두 평균과 서로 다른 두 표준편차를 다양한 sites와 함께 활용할 수 있어요.
이 연습은 강의의 일부입니다
purrr로 배우는 함수형 프로그래밍 기초
연습 안내
sites,means,means2,sigma,sigma2리스트를 포함하는 이름 있는 리스트를 만드세요.- 리스트들의 리스트에
pmap()을 적용해, 세 개의 열을 가진 데이터 프레임들의 리스트를 만드세요. 첫 번째 열은sites입니다.- 두 번째 열
a는mean = means,sd = sigma를 사용하는rnorm()입니다. - 세 번째 열
b는mean = means2,sd = sigma2를 사용하는rnorm()입니다.
- 두 번째 열
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create a master list, a list of lists
pmapinputs <- list(sites = ___, means = ___, sigma = ___,
means2 = ___, sigma2 = ___)
# Map over the master list
list_of_files_pmap <- pmap(___,
function(___, ___, ___, ___, ___)
data.frame(sites = ___,
a = rnorm(mean = ___, n = 200, sd = ___),
b = rnorm(mean = ___, n = 200, sd = ___)))
list_of_files_pmap