Wie kann ich den Operator Vorrang% foo% und% bar% bestimmen ?
Sie können nicht. Mit R können Sie nicht den Vorrang von benutzerdefinierten Infix-Operatoren festlegen. Benutzerdefinierte Infix-Operatoren haben die Standard-Vorrangregeln, was bedeutet, dass sie von links nach rechts ausgewertet werden.
Ein Grund für diese Einschränkung ist, dass es extrem schwierig und einschränkend wäre, eine Reihe von Präzedenzregeln für Infix-Operatoren zu implementieren und aufrechtzuerhalten. Stellen Sie sich vor, Sie hätten ein R-Paket geladen, das einige benutzerdefinierte Infix-Operatoren enthält. Dann müsste die Beziehung der Infix-Operatoren aus dem Paket zu den %foo%
und %bar%
, die Sie erstellt haben, definiert werden. Dies wird schnell zu einer ernsthaften Belastung werden.
Stellen Sie sich als Beispiel vor, dass Paket 1 den Infix-Operator %P1IF%
enthält und Paket 2 den Infix-Operator %P2IF%
enthält. Jedes Paket hat definiert, dass sein Infix-Operator die höchste Priorität haben sollte. Wenn Sie beiden Pakete laden sind und zwei, dann würde der folgende Ausdruck undefiniert:
v1 %P1IF% v2 %P2IF% v3
(v1 %P1IF% v2) %P2IF% v3 # package 2 doesn't expect this
v1 %P1IF% (v2 %P2IF% v3) # package 1 doesn't expect this
Unabhängig davon, was die Priorität könnte das Ergebnis für eines der beiden Pakete sein könnte falsch sein.