Ist es möglich, den Operator ohne %% zu definieren?

8

In R sind benutzerdefinierte Operatoren erlaubt, aber es scheint, dass nur % % wie Operatoren akzeptiert werden. Ist es möglich, diese Einschränkung zu umgehen, um Operatoren wie zum Beispiel >> oder etwas, das nicht wie % % ist, zu definieren?

Der Operator muss ein echter Operator sein, damit wir ihn wie 1 >> 2 verwenden können und nicht wie ">>"(1,2) verwenden müssen.

    
Kun Ren 11.07.2014, 12:02
quelle

2 Antworten

12

Nein. R erlaubt Ihnen nur

  1. bestehende Operatoren neu definieren (zB + oder tatsächlich <- ),
  2. Definieren Sie neue Infix-Operatoren, indem Sie sie mit %…% umgeben.

Das sind die Regeln, nach denen wir spielen müssen. Innerhalb dieser Regeln ist jedoch alles fair und Spiele. Zum Beispiel können wir + für Zeichenketten neu definieren, um eine Verkettung durchzuführen, ohne ihre normale Bedeutung (Addition) zu zerstören:

%Vor%

Dies ist die alte Definition, die wir für Zahlen beibehalten wollen:

%Vor%

Dies nutzt das S3-Klassensystem in R, um + generic für den Typ des ersten Arguments zu machen.

Die Liste der Operatoren, die so neu definiert werden können, ist sehr vielschichtig. Bei der ersten Zählung enthält es die folgenden Operatoren:

  

% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de% ,   % Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,% Co_de%,    + , - , * , / , ^ , ** , &

(Entnommen aus den Modulen Quellcode .)

Darüber hinaus können Sie | überschreiben, indem Sie : neu definieren. Dies scheint nur selten sinnvoll zu sein - aber es gibt zumindest ein gutes Beispiel dafür, weniger wortreiche Lambdas zu definieren:

%Vor%

Implementierung als Kern

    
Konrad Rudolph 11.07.2014 12:56
quelle
4

Sie können solche Dinge tun, aber Sie möchten diese Objekte möglicherweise einer neuen Umgebung zuweisen, um sicher zu sein.

%Vor%     
Rich Scriven 11.07.2014 12:28
quelle

Tags und Links