Help us understand the problem. What is going on with this article?

R の NSE を駆使して pipeR ワールドを作る #rstatsj

More than 5 years have passed since last update.

R 界隈で NSE の話題が持ち上がっているようで。

このタイミングで、NSE を使って pipeR ワールドを作るという超どうでもいい話をします。

pipeR を知らないという方はこちらをご一読ください。

さて、pipeR でフツーにコードを書くと、こんなコードが出来上がりますね。

R
library(pipeR)

cars %>>%
  (~ plot(dist ~ speed, data=.)) %>>%
  (lm(dist ~ speed, data=.)) %>>%
  abline(col="red")

pipeR の最大の弱点とは何でしょうか?
そう、それは可読せ %>>% 演算子を書くのが面倒くさいということですね。

そこで、NSE を使って次のような関数を用意します。

R
pipeR_world <- function(expr) {
  require(pipeR)
  expr <- substitute(expr)
  n <- length(expr)
  pipeExpr <- ""
  for(i in seq_len(n)) {
    e <- deparse(expr[i])
    if(length(e) == 1) {
      str <- substr(e, 1, nchar(e)-2)
      pipeExpr <- paste(pipeExpr, str)
      if(i != n) {
        pipeExpr <- paste(pipeExpr, "%>>%")
      }
    }
  }
  eval(parse(text=pipeExpr), envir = parent.frame())
}

この関数を使えば、先ほどのコードは次のように書くことができます。

R
pipeR_world({

  cars
  (~ plot(dist ~ speed, data=.))
  (lm(dist ~ speed, data=.))
  abline(col="red")

})

なんと、パイプ %>>% を全く書かなくても済むようになりました!
pipeR_world() 関数によって、pipeR の世界が作られたのです。

この世界では、人々はパイプから解放されます。
pipeR には、本当はパイプなんて必要なかったんやー。

この世界でプログラミングすると、普通の R プログラミングと全く異なる次元の体験ができるのでお勧めです。
みなさんもぜひ pipeR_world の一員になりましょう!

enjoy!

追記

本家へ取り込まれました

hoxo_m
ホクソエム (hoxo_m) は架空のデータ分析者であり、日本の若手のデータ分析者集団のペンネームである。当初このデータ分析者集団は秘密結社として活動し、ホクソエムを一個人として活動させ続けた。
https://blog.hoxo-m.com/
hoxom
Machine Learning and Data Analysis Company for Your Smiles :)
http://hoxo-m.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした