Come posso determinare la precedenza degli operatori del% pippo% e% bar% ?
Non è possibile. R non ti consente di impostare la precedenza degli operatori di infissi personalizzati. Gli operatori di infissi definiti dall'utente hanno le regole di precedenza predefinite, il che significa che verranno valutate da sinistra a destra.
Una ragione di questa limitazione è che sarebbe estremamente difficile e limitante implementare e mantenere un insieme di regole di precendenza per gli operatori infissi. Immagina di aver caricato un pacchetto R che viene fornito con alcuni operatori di infissi personalizzati. Quindi è necessario definire la relazione degli operatori infissi dal pacchetto allo %foo%
e %bar%
che è stato creato. Questo diventerà presto un onere serio.
Ad esempio, immaginare che il pacchetto 1 contenga l'operatore infisso %P1IF%
e il pacchetto due contenga l'operatore infisso %P2IF%
. Ogni pacchetto ha definito che il proprio operatore infisso dovrebbe avere la precedenza più alta. Se si dovesse caricare sia il pacchetto uno e due, quindi la seguente espressione sarebbe undefined:
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
Indipendentemente da ciò che la precedenza potrebbe essere il risultato di uno dei due pacchetti potrebbero non essere corrette.
fonte
2015-06-25 08:38:02