ПочатиПочніть безкоштовно

Імітація даних з 3+ вхідними параметрами за допомогою pmap()

А що робити, якщо потрібно ітерувати три списки? Чи існує map3()? Щоб ітерувати понад два списки — три, чотири чи навіть 20 — потрібно використовувати pmap(). Втім, pmap() вимагає трохи інакше передавати аргументи-списки.

Щоб скористатися pmap(), спочатку створіть майстер-список усіх списків, які ви хочете обійти. Саме цей майстер-список є вхідним параметром для pmap(). Замість .x чи .y використовуйте назви списків як імена аргументів.

Ви ще раз зімітуєте дані, використавши п'ять списків як вхідні замість двох. pmap() дасть вам повний контроль над згенерованим набором даних і дозволить використати два різні середні значення та два різні стандартні відхилення разом із різними майданчиками (sites).

Ця вправа є частиною курсу

Основи функціонального програмування з 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
Редагувати та запускати код