Symulowanie danych z 3+ wejściami za pomocą pmap()
Co zrobić, gdy trzeba iterować po trzech listach? Czy istnieje map3()? Do iterowania po więcej niż dwóch listach – czy to po trzech, czterech, czy nawet dwudziestu – należy użyć pmap(). Funkcja ta wymaga jednak nieco innego sposobu przekazywania argumentów listowych.
Aby skorzystać z pmap(), najpierw utwórz listę główną zawierającą wszystkie listy, po których chcesz iterować. Ta lista główna jest wejściem dla pmap(). Zamiast .x i .y używaj nazw list jako nazw argumentów.
Zasymulujesz dane jeszcze raz, tym razem używając pięciu list jako wejść zamiast dwóch. Dzięki pmap() zyskujesz pełną kontrolę nad symulowanym zbiorem danych – możesz użyć dwóch różnych średnich i dwóch różnych odchyleń standardowych, a także różnych lokalizacji.
To ćwiczenie jest częścią kursu
Podstawy programowania funkcyjnego z purrr
Instrukcje do ćwiczenia
- Utwórz nazwaną listę zawierającą listy
sites,means,means2,sigmaisigma2. - Zastosuj
pmap()na liście list, aby utworzyć listę ramek danych z trzema kolumnami; pierwsza kolumna tosites.- Druga kolumna to
a– wynikrnorm()zmean = meansisd = sigma. - Trzecia kolumna to
b– wynikrnorm()zmean = means2isd = sigma2.
- Druga kolumna to
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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