私は%X%
という名前のバイナリ演算子関数を書いたので、%X%(a,b)
の代わりに、より便利な構文a %X% b
を使用することができます。<-
のラッパーその環境内のオブジェクトに対して行われ、そのオブジェクトを上書きする前にユーザに警告する '保護された'属性があるかどうかを確認します。Rでは、バイナリ演算子のsys.call()にコマンドライン全体を渡す方法は?
私が試してみると、この機能のすべての中にa %X% b + c
a %X% b
_andこれも全てです; aはbの値を割り当てられ、cは完全に無視されます。a %X% (b + c)
が動作しますので、%X%(a, b + c)
も同様ですが、これをab inary演算子はかっこを避けることです。
<-
を上書きすると、そのsys.call()
はすべてその左右に表示されます。私はなぜコマンドラインから隣接する名前だけを見るのですか?
`%X%` <- function(...){
print(deparse(sys.call()));
}
a %X% 3 + 1:10;
所望の結果が "%のX%3 + 1時10分" 観察結果は "%のX%3"
:ここ
は、この問題を複製するコードでありますありがとう。
奇数;私がコード(R 2.15.1)を実行すると、%X%3 + 1:10のエラーが発生し、バイナリ演算子に数字以外の引数を返します。 –
@DavidRobinson、エラーは '+'演算子からのものです型の文字の 'a%X%3'の出力を数値型の' 1:10'で合計します。 – flodel