2016-03-25 7 views
1

R、s.t.で(+)関数を定義することは可能ですか?その2つの議論の間に働くことができますか?言い換えれば埋め込み関数の名前からどのように%を削除できますか?

、私は(私は、私はこの問題を解決することができる方法がわからないことはできません)、次の中置関数から%を削除したいと思います:

`%(+)%` <- function(x,y) { x+(2*y) } 
2 %(+)% 3 

答えて

3

ユーザー定義中置演算子にRのパーセント記号で囲まなければなりません。したがって、あなたの質問に対する答えは「できません」です。ごめんなさい。 R language definitionから

Rは、ユーザー定義の挿入演算子を可能にします。これらは '%'文字で区切られた文字列の形をしています。この文字列には、 '%'以外の印刷可能な文字を含めることができます。文字列のエスケープシーケンスはここでは適用されません。

私は考えることができる唯一の選択肢、両方ともかなり必死に:

  • xyならば、あなたはoverload dispatch for the + symbol
  • あなたが(Rパーサをハック可能性ができS4クラスのメンバーとして定義されています推奨されていません!)、this exampleのように、パーサーを変更するために誰かがRの読み取り専用Githubミラーをフォークしました(hereを参照)。
1

私は、%を除いて(+)を定義することはできません。あなたは以下を使用しない理由は上記の通り関数を作成するために探している場合は、:

`&`<- function(x, y) { x+(2*y) } 
2&3 
#Use rm to remove the defined function 
rm(`&`) 
+0

あなたは、彼に何かを定義しているので、それは無限再帰エラーにつながるので、実際には、要件ごとに+を定義することはできません実際の関数で使用しています。 – TsTeaTime

関連する問題