いくつかのプログラミング言語を使ってきたけど
前回
Tokyo.R #66
私の感想
渡したコードの意味が変わっている
.
)このセッションの目標
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
のソースコード読むと楽しいよ。