pmap() で3つ以上の入力を使ってデータをシミュレーションする
3つのリストを反復処理したい場合はどうすればよいでしょうか? map3() はあるのでしょうか? 2つを超えるリスト(3つ、4つ、あるいは20でも)を反復処理するには、pmap() を使います。ただし、pmap() ではリストの引数の渡し方が少し異なります。
pmap() を使うには、まず反復処理したいすべてのリストを含む「マスターリスト」を作成します。マスターリストが pmap() の入力になります。.x や .y の代わりに、リスト名をそのまま引数名として使います。
ここでは、2つではなく5つのリストを入力として使い、もう一度データをシミュレーションします。pmap() を使うとシミュレートするデータセットを完全にコントロールでき、異なるサイトに加えて、2つの異なる平均と2つの異なる標準偏差を利用できます。
この演習はコースの一部です
purrr で学ぶ関数型プログラミング入門
演習の手順
sites、means、means2、sigma、sigma2の各リストを含む名前付きリストを作成します。- そのリストのリストに対して
pmap()を実行し、3列のデータフレームのリストを作成します。最初の列はsitesです。- 2列目は
aで、mean = means、sd = sigmaを指定したrnorm()の結果です。 - 3列目は
bで、mean = means2、sd = sigma2を指定したrnorm()の結果です。
- 2列目は
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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