dplyrを使ってパイプ処理.R

要約

・パイプ処理を使ったら、式の入れ子構造が簡素化できて見やすい
・おまけにmutateも覚えた

パイプ処理とは何だ

 前回、置換方法について色々調べていた時に、サンプルコードに見慣れない文字列"%>%"が多く目に付いた。調べてみると、パイプ処理というやつらしい。
 そういえば、大学のプログラミングの授業でやったなあ。忘れたけど。

 というわけで調べなおすと、前の処理の出力を、後の処理の入力にできる処理のことらしい。
 VBAだとカッコ内にいくつもの式が入れ子で存在するクソ長い式になったり、それがいやなら仮の変数を用意しておいて一時格納するとかが必要だった。
 ただ、R標準では備えられていないため、dplyrパッケージが必要だとのこと。デ…dplyr。

install.packages("dplyr")
library(dplyr)

試しに前回の最終形を書き直してみる

x <- str_replace_all(df$hoge, "\\(.*?\\)", "")
df <- data.frame(df, hogehoge = x)

  これをパイプ処理でするとこうなる。

df <- df$hoge %>%
 str_replace_all("\\(.*?\\)", "") %>%
 data.frame(df, hogehoge = .)

 出力を移す先の入力はデフォルトで決まっているようで、明示的にどこかのパラメータへ放り込むには、".(ドット)"を使う必要があるようだ。
 ただし、df %>% .$hogeは .ドットを省略して$hogeでも行けるので、まあ何かちゃんとしたルールがあるんだろうなあ。

 ちなみに、dplyrパッケージにはmutate関数というのがあって、data.frameのように使うことができるとのこと。
 異なるのは、mutate関数では既存の列の上書きができるということだ。
 つまり、上の例では処理結果をhogehoge列として追加していたけれども、"hoge = ."とすることで、hoge列の上書きが可能になる。
 便利だねえ、デ...dplyr。

 え?magrittr?

以上。

この記事が気に入ったらサポートをしてみませんか?