Hatena::ブログ(Diary)

盆栽日記

2014-09-05

おやすみ蓮君、さよなら可読性

mtcarsのsummary結果を保存したのち、そのままmtcarsでlmしてその結果をsummaryしたい。

%>%を使って書くとこういう感じだが当然動かない。

mtcars %>% summary -> summ %>% lm(formula = mpg ~ wt + cyl, data = .) %>% summary

だがpipeRの最新版(0.4.3)なら実現できるッ!蓮君素敵!

# pipeR 0.4.3
devtools::install_github("pipeR","renkun-ken")
library(pipeR)
mtcars %>>%
  (~summ = summary(.)) %>>%  # オブジェクトをその後のchainで使いたくないときは~をつける
  (lm_mtcars = lm(formula = mpg ~ wt + cyl, data = .)) %>>%  #  使いたい時は~をつけない
  summary

さよなら可読性!!!!

2014-08-18

混迷をきわめるpipe界隈

現在、Rにおけるpipe演算子界隈(%>%とかそういうの)については、dplyrパッケージの勢いに後押しされたmagrittrパッケージが一見その主流になっているようにみえますが、そこに思わぬ伏兵pipeRパッケージがあらわれ事態は混迷をきわめてきました。

pipeRは%>%と同じ機能でありながら非常に高速な%>>%を実装しているわけですが、ここにきてそのエイリアスとして$を採用してきました。jQueryっぽい感じですね。

http://renkun.me/blog/2014/08/16/easier-way-to-chain-commands-using-pipe-function.html

使い方は最初のオブジェクトをPipeではさむだけ。

library(pipeR)
library(dplyr)
Pipe(iris)$group_by(Species)$summarise_each(funs(min,max), matches("Width"))$glimpse()
# Variables:
# $ Species         (fctr) setosa, versicolor, virginica
# $ Sepal.Width_min (dbl) 2.3, 2.0, 2.2
# $ Petal.Width_min (dbl) 0.1, 1.0, 1.4
# $ Sepal.Width_max (dbl) 4.4, 3.4, 3.8
# $ Petal.Width_max (dbl) 0.6, 1.8, 2.5

いやあpipe界隈どうなるのでしょうか。

ちなみにpipeRパッケージの作者は先に紹介したrlistパッケージの作者でもあります。

こちらはリストの操作に便利なので一度使ってみるとよいです。

rlistパッケージはリストのデータハンドリングに便利 - 盆栽日記