開始使用免費開始

使用 pmap() 進行 3 個以上輸入的資料模擬

如果你需要在 3 個清單上反覆運算呢?有 map3() 嗎?當要同時處理超過 2 個清單時,不論是 3、4,甚至 20 個,都需要使用 pmap()。不過,pmap() 需要用稍微不同的方式提供清單引數。

要使用 pmap(),你必須先建立一個包含所有要迭代之清單的「主清單」(master list)。這個主清單會作為 pmap() 的輸入。呼叫時不要用 .x.y,而是把清單名稱「當作」引數名稱來用。

你將再進行一次資料模擬,這次用 5 個清單作為輸入,而不是 2 個。使用 pmap() 能讓你完全掌控模擬的資料集,並可在不同的據點(sites)下,套用兩個不同的平均數與兩個不同的標準差。

本練習屬於課程

使用 purrr 的函式式程式設計基礎

檢視課程

練習說明

  • 建立一個具名清單,內含 sitesmeansmeans2sigmasigma2 這些清單。
  • 對這個「清單的清單」使用 pmap(),建立一個包含 3 欄的資料框清單;第一欄為 sites
    • 第二欄為 a,其值由 rnorm() 產生,mean = meanssd = sigma
    • 第三欄為 b,其值由 rnorm() 產生,mean = means2sd = 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
編輯並執行程式碼