Rの二項演算子関数を作成しました(つまり、%X%
入力する代わりに%X%(a,b)
、より便利な構文を使用できるように、のような名前の関数を作成しました。私の目標は、その中のオブジェクトに対して行われたことをログに記録するなどa %X% b
のラッパーを作成することです。<-
環境を設定し、そのオブジェクトを上書きする前にユーザーに警告する「保護された」属性を確認します。
a %X% b + c
これはすべて機能しますが、関数内のようなことを実行しようとすると、表示されるのはa %X% b
_であり、それだけです。aにはbの値が割り当てられ、cは完全に無視されます。a %X% (b + c)
動作します%X%(a, b + c)
が、これを二項演算子として記述することの全体的なポイントは、括弧を避けることです。
を上書きする<-
と、そのsys.call()
左右のすべてが表示されます。コマンドラインから隣接する名前だけが表示されるのはなぜですか?
この問題を再現するコードは次のとおりです。
`%X%` <- function(...){
print(deparse(sys.call()));
}
a %X% 3 + 1:10;
望ましい結果は「%X%3 + 1:10」です。観測された結果は「%X%3」です。
ありがとう。