Симуляция данных с тремя и более входными параметрами с помощью pmap()
Что делать, если нужно итерироваться по трём спискам? Существует ли функция map3()? Для итерации более чем по двум спискам — будь то три, четыре или даже двадцать — используется pmap(). При этом pmap() требует передавать аргументы-списки несколько иначе.
Чтобы использовать pmap(), сначала нужно создать главный список, объединяющий все списки, по которым вы хотите итерироваться. Именно этот главный список передаётся в pmap() в качестве входных данных. Вместо .x или .y используйте имена списков как имена аргументов.
Вы снова будете симулировать данные, но на этот раз с пятью входными списками вместо двух. pmap() даёт полный контроль над симулируемым набором данных и позволяет задать два разных среднего значения и два разных стандартных отклонения для разных участков.
Это упражнение является частью курса
Основы функционального программирования с purrr
Инструкции к упражнению
- Создайте именованный список, содержащий списки
sites,means,means2,sigmaиsigma2. - Примените
pmap()к списку списков, чтобы получить список таблиц с тремя столбцами; первый столбец —sites.- Второй столбец —
a: значенияrnorm()сmean = meansиsd = sigma. - Третий столбец —
b: значенияrnorm()сmean = means2иsd = sigma2.
- Второй столбец —
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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