使用 pmap() 处理 3 个以上输入进行数据模拟
如果需要在三个列表上迭代呢?有没有 map3()?当要在两个以上的列表上迭代时,无论是 3、4,还是 20 个,都需要使用 pmap()。不过,pmap() 需要我们以稍有不同的方式提供列表参数。
要使用 pmap(),首先需要创建一个包含所有待迭代列表的「主列表」。主列表是 pmap() 的输入。调用时不要使用 .x 或 .y,而是使用列表的名称作为参数名。
您将再次进行数据模拟,这次用 5 个列表作为输入,而不是 2 个。使用 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