Jak mogę określić pierwszeństwo operatorowi% foo% i% bar% ?
Nie możesz. R nie pozwala ustawić priorytetu niestandardowych operatorów infiksów. Operator infix zdefiniowany przez użytkownika ma domyślne reguły pierwszeństwa, co oznacza, że będą oceniane od lewej do prawej.
Jednym z powodów tego ograniczenia jest to, że niezwykle trudne i ograniczające byłoby wdrożenie i utrzymywanie zestawu reguł precendence dla operatorów infiksów. Wyobraź sobie, że załadowałeś pakiet R, który jest dostarczany z niestandardowymi operatorami infiksów. W takim przypadku należy zdefiniować relację operatorów infiksów z pakietu do utworzonych przez użytkownika %foo%
i %bar%
. To szybko stanie się poważnym ciężarem.
Jako przykład wyobraź sobie, że pakiet jeden zawiera operatora infiksu %P1IF%
, a drugi pakiet zawiera operatora infiksów %P2IF%
. Każdy pakiet zdefiniował, że jego operator infiksowania powinien mieć najwyższy priorytet. Jeśli było załadować zarówno jeden pakiet i dwa, a następnie następujące wyrażenie będzie niezdefiniowana:
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
Niezależnie od tego, co pierwszeństwo może być wynikiem jednego z dwóch pakietów może być nieprawidłowe.