НачатьНачать бесплатно

Симуляция данных с тремя и более входными параметрами с помощью 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
Редактировать и запускать код