Mô phỏng dữ liệu với 3+ đầu vào bằng pmap()
Điều gì xảy ra nếu bạn cần lặp qua ba list? Có map3() không? Để lặp qua nhiều hơn hai list — có thể là ba, bốn, thậm chí 20 — bạn sẽ cần dùng pmap(). Tuy nhiên, pmap() yêu cầu bạn cung cấp các đối số list theo cách hơi khác một chút.
Để dùng pmap(), trước tiên bạn cần tạo một master list chứa tất cả các list mà bạn muốn lặp qua. Master list sẽ là đầu vào cho pmap(). Thay vì dùng .x hoặc .y, hãy dùng chính tên các list làm tên đối số.
Bạn sẽ mô phỏng dữ liệu thêm một lần nữa, lần này dùng năm list làm đầu vào thay vì hai. Dùng pmap() giúp bạn kiểm soát hoàn toàn bộ dữ liệu mô phỏng, và cho phép bạn dùng hai giá trị trung bình khác nhau và hai độ lệch chuẩn khác nhau cùng với các địa điểm khác nhau.
Bài tập này là một phần của khóa học
Nền tảng Lập trình Hàm với purrr
Hướng dẫn bài tập
- Tạo một list có đặt tên, chứa các list
sites,means,means2,sigma, vàsigma2. - Dùng
pmap()trên list các list để tạo một list các data frame với ba cột; cột thứ nhất làsites.- Cột thứ hai là
a, được tạo bằngrnorm()vớimean = meansvàsd = sigma. - Cột thứ ba là
b, được tạo bằngrnorm()vớimean = means2vàsd = sigma2.
- Cột thứ hai là
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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