第5章 tidyverse(dplyr)で再現 ・ ノック 69 / 100 ・ [[000 - はじめに(使い方と目次)|目次]]<br> ← 前 [[068 - グループごとに要約する]] ・ 次 → [[070 - ネイティブパイプを使う]] > [!info] パイプ %>% は「左の結果を右の関数の最初の引数として渡す」記号です > **パイプ**(`%>%`)は「左側の結果を右側の関数に渡す」という意味の記号です。「料理のレシピ」に例えると、`野菜を洗う %>% 切る %>% 炒める` のように、「前の操作の結果を次に送る」流れを一直線に書けます。 > > パイプを使わずに書くと `summarise(filter(iris, Species == "setosa"), m = mean(Sepal.Length))` のように内側から外側へ読む必要がありますが、パイプを使うと `iris %>% filter(...) %>% summarise(...)` と上から下へ順番に読めます。コードの意図が伝わりやすくなるのがパイプの大きな利点です。`%>%` は magrittr パッケージ由来で、dplyr 読み込み時に使えるようになります。 ## 問題 `iris` を `%>%` でつないで「setosa だけに絞り、Sepal.Length の平均を求める」処理を一行の流れで書いてみましょう。 > [!tip] ヒント > `iris %>% filter(...) %>% summarise(...)` という形になります。各ステップが前の結果を受け取ります。 > [!success]- 回答を見る > ```r > library(dplyr) > iris %>% > filter(Species == "setosa") %>% > summarise(m = mean(Sepal.Length)) > ``` > ``` > m > 1 5.006 > ``` > Rベースでは `mean(iris[iris$Species == "setosa", "Sepal.Length"])` のように内側から読む書き方でしたが、`%>%` を使うと「irisを使って → setosaに絞って → 平均を求める」と上から順番に読めます。