![]()
いくつかのプログラミング言語を使ってきたけど

前回
Tokyo.R #66
66th Tokyo.R Beginner session2 by kilometer

66th Tokyo.R Beginner session2 by kilometer

私の感想
渡したコードの意味が変わっている
.)このセッションの目標
R言語について知る
そして
中置演算子
関数呼び出し
実は
これは
これは
なのでこれは
演算子を定義する
ここまでの知識で
これは
こう実装できる
動いた
でも右辺が関数呼び出しだとだめ
もう少し知識が必要
Rの関数では
つまり
引数が使われた場合に初めて評価される

Rの関数は、引数の値だけでなく
この引数を計算するコードを利用する評価方法が
NSE (Non-standard evaluation)
substitute() で表現式を捕捉できる
quote() でも表現式を捕捉できる
ただし関数内での挙動が違う
eval() で表現式を評価できる
eval() の第2引数で環境を指定できる
quote() は表現式を返す
表現式は
abstract syntax tree (AST) とも呼ばれる
pryr::ast() で木構造を見ることができる
表現式はlistのように扱える
表現式は修正できる
ということは
構文木を読み書きする
もういちどパイプ演算子を実装してみよう
x %>% f(y) が f(x, y) と等価
f の引数の先頭に x を追加すれば良い
バージョン2
動いた
でもプレースホルダー (.) に対応していない
もう少しがんばる
表現式がドットを含むかどうか確認する補助関数
引数の先頭にドットを追加する補助関数
バージョン3
右辺にドットがあってもなくても動く
ちなみに本物のパイプ演算子を使いたい場合は
magrittrのソースコード読むと楽しいよ。
