开始使用免费开始使用

使用 pmap() 处理 3 个以上输入进行数据模拟

如果需要在三个列表上迭代呢?有没有 map3()?当要在两个以上的列表上迭代时,无论是 3、4,还是 20 个,都需要使用 pmap()。不过,pmap() 需要我们以稍有不同的方式提供列表参数。

要使用 pmap(),首先需要创建一个包含所有待迭代列表的「主列表」。主列表是 pmap() 的输入。调用时不要使用 .x.y,而是使用列表的名称作为参数名。

您将再次进行数据模拟,这次用 5 个列表作为输入,而不是 2 个。使用 pmap() 能让您完全掌控模拟数据集,并可在不同站点的同时使用两个不同的均值和两个不同的标准差。

本练习是课程的一部分

使用 purrr 掌握函数式编程基础

查看课程

练习说明

  • 创建一个具名列表,包含 sitesmeansmeans2sigmasigma2 这几个列表。
  • 对这个列表的列表使用 pmap(),创建一个包含三列的数据框列表;第一列是 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
编辑并运行代码